eval()

将《javascript 权威指南》第4章收尾,并学习完第5章,收获:
(1)eval()是一个函数还是一个运算符?一个函数
(2)直接调用eval()时,它总是在调用它的上下文作用域内执行;
其他的间接调用则使用全局对象作为其上下文作用域,并且无法读、写、定义局部变量和函数
var geval=eval; //使用别名调用eval将是全局eval
var x="global";
var y="global";
function f(){
var x="local";
eval("x+='changed'"); //直接eval更改了局部变量的值
return x; //返回更改后的局部变量
}
function g(){
var y="local";
geval("y+='changed'"); //间接调用更改了全部变量的值
return y;//返回未更改后的局部变量
}
console.log(f(),x); //更改了局部变量:输出"localchanged global"
console.log(g(),y); //更改了全局变量:输出"local globalchanged"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值