如何给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
1 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
做不到。
eval
在JavaScript中有两种调用方式:直接调用和间接调用。
直接调用时:eval内代码块的作用域绑定到当前作用域。
间接调用时:eval内代码块的作用域绑定到全局作用域。
换句话说,eval在间接调用时,就不遵守JavaScript词法环境的规则了。
你的代码实质上是用了eval的间接调用方式,而又想让它访问当前作用域中的变量,是不可能的。所以你必须改变代码的写法。
添加回答
举报
0/150
提交
取消