var a = 100;
(function(){
console.log(a);
var a = 10;
})();输出的结果为何是undefined, 如何修改结果输出100?
2 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
这段代码其实是这样
var a = 100;
(function(){
var a;
console.log(a);
a = 10;
})();所以console.log(a)的时候JS引擎找到了作用域中的变量a,但是其值是undefined
至于你想要让它输出100,那方法就多了去了,我提供个自己的
var a = 100;(function(num){
var a = num;
console.log(a);})(a);把外部作用域的a的值通过参数传入函数中,然后打印出来。这其实挺有用的。
另外说一下上面同学的第二个例子,这个例子其实不太好,因为有点混淆了。
首先if,for之类的操作符不会创建一个私有的作用域
if (true) { var b = 1000;
}console.log(b);//1000,在外部也可以调用,实际上就是在全局的声明然后上面这个例子
var a = 100;if(true){ console.log(a); var a = 10;
}其实就是
var a = 100;console.log(a);var a = 10;
感觉容易搞混。
添加回答
举报
0/150
提交
取消
