代码之家  ›  专栏  ›  技术社区  ›  Tridip Lodh

在ES6中,JAVASCRIPT函数在“严格使用”模式下的行为如何?[已关闭]

  •  -2
  • Tridip Lodh  · 技术社区  · 1 年前

    从ES6开始,如果我们在代码开头使用“use strict”,函数也会被块作用域化。 有人能告诉我代码中出了什么问题吗?为什么a仍然无法访问?我是不是错过了什么?

    "use strict";
    
    function foo() {
      var a = 10;
    }
    
    {
      var z = 20;
    }
    foo();
    console.log(a); //  reference error : a is not defined
    1 回复  |  直到 1 年前
        1
  •  0
  •   DecPK    1 年前

    您正在访问 a 使用声明 var 函数内部。 变量 是否使用函数范围并不重要 strict 模式。

    var语句声明了一个函数范围或全局范围的变量,可以选择将其初始化为值-MDN

    因此访问其范围之外的会导致 Reference Error

    "use strict";
    
    function foo() {
        var a = 10;
    }
    {
    var z = 20;
    var newA = 100;
    }
    foo();
    console.log(a); // reference error : a is not defined
    console.log(z); // z = 20
    
    console.log(newA); // newA = 100