为了账号安全,请及时绑定邮箱和手机立即绑定

关于js中eval的作用域的问题

关于js中eval的作用域的问题

jeck猫 2018-08-13 13:06:27
如何给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的间接调用方式,而又想让它访问当前作用域中的变量,是不可能的。所以你必须改变代码的写法。

参考:10.4.2 Entering Eval Code


查看完整回答
反对 回复 2018-09-20
  • 1 回答
  • 0 关注
  • 887 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号