JavaScript eval ("{}") 返回行为?

标签 javascript ecmascript-5

根据ECMA-262 Specification ,以下语句返回 1:

eval("1;;;;;")
eval("1;{}")
eval("1;var a;")

确保:

The value of a StatementList is the value of the last value producing Statement in the StatementList.

你能解释一下这些不同的返回吗?

eval("{}") // undefined
eval("var a={}; a;") // {}
eval("var a={};") // undefined

1;{}; 有什么区别?

最佳答案

单独放置时,{} 被解释为一个 block ,而不是一个对象。它不包含任何语句,因此不会影响 eval("1;{}") 的值。要强制将其解释为对象,您可以使用括号:

eval("1;({})"); // {}

关于JavaScript eval ("{}") 返回行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791202/

相关文章:

Javascript 原型(prototype)访问另一个原型(prototype)函数

javascript - 在 ES6 之前的代码中使用 "let"和 "const"可以吗?

javascript - 创建 React 应用程序未将 abab 模块编译为 ES5 兼容代码,导致 IE11 失败

javascript - 没有严格模式的 JSON.parse

javascript - 如何从 ES6 转换为 ES5(箭头函数)

javascript - 如果有一个使用 javascript 或 jquery 的长菜单,如何自动将滚动条添加到侧边栏菜单

javascript - 如何从html调用javascript函数?

javascript defineProperty 使属性不可枚举

javascript - 当前聚合的 MongoDB Node Driver Count

Javascript - 脚本内存与 DOM 存储