JavaScript 的动态特性是“eval”改变调用上下文。这是什么意思?一些例子会更好。
eval
间接调用时确实会更改上下文。并将其更改为全局上下文(所有函数的默认上下文)。
var myObj = { a: 1 }
function someFunc() {
console.log(eval('this.a')) // 1
console.log(eval('this === myObj')) // true
var indirectEval = eval
console.log(indirectEval('this.a')) // undefined
console.log(indirectEval('this === window')) // true
}
void someFunc.call(myObj)
Direct eval
调用不会更改上下文(也不会更改范围)。
See “全球评估。有什么选择?” http://perfectionkills.com/global-eval-what-are-the-options/了解详情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)