javascript - 关于js中eval的作用域的问题
本文介绍了javascript - 关于js中eval的作用域的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如何给eval设置正确的作用域?
我想让eval
能够取得当前函数中的变量。
function test(){
var left = {}
te('left.top=456') //报错left undefined
return left
}
function te(str){
eval(str)
}
var a = test();
注意:eval
必须要在另一个函数上,就是不能在test()
中直接写eval
解决方案
做不到。
eval
在JavaScript中有两种调用方式:直接调用和间接调用。
直接调用时:eval内代码块的作用域绑定到当前作用域。
间接调用时:eval内代码块的作用域绑定到全局作用域。
换句话说,eval在间接调用时,就不遵守JavaScript词法环境的规则了。
你的代码实质上是用了eval的间接调用方式,而又想让它访问当前作用域中的变量,是不可能的。所以你必须改变代码的写法。
这篇关于javascript - 关于js中eval的作用域的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文