【发布时间】:2017-05-05 12:59:33
【问题描述】:
根据Mozilla docs,为了使用eval 执行函数,它必须包含在( ) 中,即如果您不使用它们,则将其视为字符串。
eval 作为字符串定义函数需要“(”和“)”作为前缀和后缀
当我执行普通函数时,它会按预期返回undefined,但对于 ES6 函数则不会。我的问题是 JavaScript 引擎或仅在 eval 函数中对 ES6 函数的处理方式不同。
var fn = "function a(){}";
var es6fn = "()=>{}";
console.log(eval(fn)); // undefined
console.log(eval(es6fn)); // ()=>{}
console.log(typeof eval(es6fn)); // ()=>{} i.e. a function
【问题讨论】:
-
es6 Lamda 表达式的行为类似于匿名函数 - 所以这是 fn 和 es6fn 之间的一个区别
-
附带说明:这很好玩,但请不要在生产中使用它 - 你未来的自己会感激不尽
标签: javascript ecmascript-6 eval arrow-functions