我正在阅读一些问题,我发现这个代码,它似乎很容易,但我无法理解这个函数:(function() {} ())
是如何工作的。
请帮助我了解var foo=6
和bar=9
的价值仅在bar=bar+foo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var foo = 6;
bar = 10;
(function () {
var foo = 5;
bar = 9;
}())
bar = bar + foo;
document.getElementById("demo").innerHTML = "Final value is " + bar;
</script>
</body>
</html>
答案 0 :(得分:1)
这是一些非常糟糕的变量使用,特别是使用&#34;未声明的&#34; bar
。
基本上,您的全球范围有2个变量foo
&amp; bar
。起初他们被初始化为6&amp;分别为10。然后,调用一个函数来声明它自己的foo
变量并将其设置为5.它还将全局bar
设置为9.所以现在全局值为6&amp; 9.这些的总和是15。
答案 1 :(得分:0)
自
var foo = 5;
有var
声明,它是一个局部变量。赋值对函数外的foo
变量没有影响。全局变量继续具有值6
。
bar = 9;
没有var
声明,因此它只是一项任务。由于变量不是在函数内局部声明的,因此它会分配全局变量,因此全局变量现在具有值9
。
之后添加两个全局变量时,会得到9 + 6 = 15
。