JavaScript中的eval如何更改调用上下文? [英] How eval in JavaScript changes the calling context?

查看:120
本文介绍了JavaScript中的eval如何更改调用上下文?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JavaScript的动态属性是eval改变了调用上下文。这是什么意思?一些例子会更好。

On dynamic property of JavaScript is that "eval" changes the calling context. What does it mean? Some examples would be better.

推荐答案

eval 确实会改变上下文间接打电话。并将其更改为全局上下文(所有函数的默认上下文)。

eval does change the context when called indirectly. And it changes it to the global context (the default context for all functions).

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)

直接 eval 调用不会更改上下文(也不会更改范围)。

Direct eval calls don't change the context (nor do they change the scope).

请参阅全球评估。有哪些选项?了解详情。

这篇关于JavaScript中的eval如何更改调用上下文?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆