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
提交
取消