变量范围混淆在JavaScript中

这个问题在这里已经有了答案:

  • JavaScript中变量的范围是什么? 25个答案

  • Javascript中只有两种范围; 函数范围和全局范围。

    if语句中的代码没有自己的范围,因此if语句中的变量与外部的变量相同。

    在一个范围内多次声明一个变量不会创建多个变量。 if语句中的var关键字被忽略,因为变量已经在范围中声明了一次,所以它只是一个赋值。


    还要注意,变量的声明被提升到范围的顶部,所以即使声明位于未执行的代码块中,该变量仍然被创建:

    var foo = 1; // a global variable
    (function() {
      console.log(foo) //outputs "undefined"
      foo = 2; // sets the local variable
      if(false) {
        var foo = 3; // creates the local variable, but the assignment never happens
      }
      console.log(foo) //outputs 2
    })();
    console.log(foo) //outputs 1
    

    if不引入一个范围块(我理解它在某些语言中的确存在)。 在JavaScript中,只有function() {}创建一个范围块。

    链接地址: http://www.djcxy.com/p/40827.html

    上一篇: variables scope confusion in javascript

    下一篇: JavaScript: Can I declare variables inside switch cases?