var a,b,c;(function(){ eval('var b = 2'); (1, eval)('var c = 3'); (new Function('var a = 4'))(); document.write('<br>a: ' + a); document.write('<br>b: ' + b); document.write('<br>c: ' + c);})()document.write('<br>a: ' + a);document.write('<br>b: ' + b);document.write('<br>c: ' + c);执行此段代码后,得到如下结果a: undefinedb: 2c: 3a: undefinedb: undefinedc: 3
1 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
eval能访问上下文,new Function只能构建自己的一个私有作用域。
更新,注释一下
var a, b, c;
(function() {
// eval('var b = 2');
// 调用当前作用域
var b = 2;
// (1, eval)('var c = 3');
// 逗号操作符,括号表达式,返回的是最后一个挂载在window上的eval
window.eval('var c = 3');
// (new Function('var a = 4'))();
// 申明一个匿名函数
(function() {
var a = 4;
})
document.write('<br>a: ' + a);
document.write('<br>b: ' + b);
document.write('<br>c: ' + c);
})()
document.write('<br>a: ' + a);
document.write('<br>b: ' + b);
document.write('<br>c: ' + c);
添加回答
举报
0/150
提交
取消