如果我们访问范围变量,则不定义变量

时间:2017-01-17 05:52:28

标签: javascript ecmascript-6

z/OS V2.1 XL C/C++

输出:未捕获的ReferenceError:未定义x。

Q1。为什么会出错?

Q2。在上面的示例中,如何在第一个控制台中访问x = 10?

2 个答案:

答案 0 :(得分:1)

允许您声明范围有限的变量。与var关键字不同,var关键字全局定义变量,或者与整个函数本地定义,无论块范围如何。

答案 1 :(得分:0)

与所有人提到的一样,let的范围有限。如果使用let声明变量,则变量的范围限定为最近的封闭块。这意味着您只能在相同的代码块中使用它,如果您在函数或其他块之外声明它,则该块无法使用它。

但是如果你使用var声明了一个变量,那么该变量将被限定为最近的功能块,这意味着它是全局的,但有一个限制:你不能仅在函数内使用声明的值,但仍然能够在函数内定义它。无需再次申报。

有关更详细的说明,您可以查看:What's the difference between using "let" and "var" to declare a variable?

所以回答你的问题:由于你使用了let并且在if块之外声明了它,因此它给出了一个错误,因此if块没有定义/可见。要使其访问x = 10,请使用var代替let