JavaScript是否实现了词汇范围界定?

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

  • JavaScript中变量的范围是什么? 25个答案
  • 使用“let”和“var”在JavaScript中声明变量有什么区别? 24个答案

  • 在JavaScript中只有函数级作用域和全局作用域。 您无法创建块范围,也不会添加任何特殊含义,也不会创建任何范围。

    这就是你的代码如何结束

    function foo()
    {
      var local = 1;
      local = 2;
      return local;
    }
    foo();
    

    在ES6中,您可以借助Let来创建块级示波器。 ES6尚未支持。 这里更多


    来自MDN:

    JavaScript没有块语句范围; 相反,在块中声明的变量对块所在的函数(或全局范围)是本地的。

    JavaScript中变量的范围是它声明的全部函数(或全局范围),所以在这里你只有一个变量local

    你的代码相当于

    function foo()
    {
      var local;
      local = 1;
      {
        local = 2;
      }
      return local;
    }
    foo()
    

    请注意,ES6(JavaScript的新规范)确实引入了let的词法范围,但它还没有真正可用。

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

    上一篇: Does javascript implement lexical scoping?

    下一篇: Uncaught ReferenceError: lat is not defined