这个函数如何:(function(){}())有效吗?

时间:2015-07-26 12:53:25

标签: javascript

我正在阅读一些问题,我发现这个代码,它似乎很容易,但我无法理解这个函数:(function() {} ())是如何工作的。

请帮助我了解var foo=6bar=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>

2 个答案:

答案 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