ขออ้างหนึ่งในข้อมูลจำเพาะ - http://tools.ietf.org/html/rfc7159#section-12
วัตถุ JavaScript โน้ต (JSON) Data Interchange รูปแบบจำเพาะฯ :
JSON เป็นส่วนย่อยของ JavaScript แต่ไม่รวมการมอบหมายและการเรียกใช้
เนื่องจากไวยากรณ์ของ JSON ยืมมาจาก JavaScript จึงสามารถใช้ฟังก์ชัน "eval ()" ของภาษานั้นเพื่อแยกวิเคราะห์ข้อความ JSON ได้ ซึ่งมักจะถือว่าเป็นความเสี่ยงที่ยอมรับไม่ได้เนื่องจากข้อความที่
อาจมีรหัสปฏิบัติการพร้อมกับการประกาศข้อมูล
การพิจารณาเดียวกันนี้ใช้กับการใช้ฟังก์ชันเหมือน eval () ในภาษาการเขียนโปรแกรมอื่น ๆ ซึ่งข้อความ JSON เป็นไปตาม
ไวยากรณ์ของภาษานั้น
ดังนั้นคำตอบทั้งหมดที่ระบุว่าฟังก์ชันนั้นไม่ได้เป็นส่วนหนึ่งของมาตรฐาน JSON นั้นถูกต้อง
คำตอบอย่างเป็นทางการคือไม่ไม่สามารถกำหนดฟังก์ชันในผลลัพธ์ JSON ได้!
คำตอบอาจเป็นได้เพราะ "code is data" และ "data is code" แม้ว่า JSON จะถูกใช้เป็นรูปแบบการจัดลำดับข้อมูลที่ไม่ขึ้นกับภาษา แต่การสร้าง "โค้ด" ผ่านประเภทอื่น ๆ ก็จะใช้ได้
อาจใช้สตริง JSON เพื่อส่งผ่านฟังก์ชัน JS ไปยังเบราว์เซอร์ฝั่งไคลเอ็นต์เพื่อดำเนินการ
[{"data":[["1","2"],["3","4"]],"aFunction":"function(){return \"foo bar\";}"}]
สิ่งนี้นำไปสู่คำถามเช่น: วิธี " รันโค้ด JavaScript ที่จัดเก็บเป็นสตริง "
เตรียมพร้อมที่จะเพิ่มแฟล็ก "eval () is evil" ของคุณและติดแฟล็ก "do not tunnel ผ่าน JSON" ไว้ข้างๆ