了解 ES6 中 var、let 和 const 的范围
了解 ES6 中 var、let 和 const 的范围
了解 ES6 中的全局、本地和块级作用域
发病前 ES2015(ES6) , 这 曾是
statement 是在 JavaScript 中声明变量的唯一选项。然而,由于 让
和 常量
在 ES6 中添加,这已经改变,并且 曾是
现在很少使用了。此外,使用还有一些好处 让
和 常量
超过 曾是
我们将在这篇文章中通过检查它们在范围方面的区别来进行介绍。
范围
范围只是指使用这些变量的区域。在 ES6 之前,只有两个作用域: 全局和局部/功能范围 .然而, 块范围 ,这是范围 让
和 常量
现在可以在 ES6 中使用。让我们用一个例子来进一步理解这三个作用域。
全球范围
变量的范围被称为 全球的 如果 曾是
变量被声明 在函数之外 .
**变量年龄 = 28;** 功能问候(){
var message = “你好”;
控制台.log(消息); // 你好
} **控制台.log(年龄); // 28**
这里, 年龄
是 全球 作用域是因为它是在函数外部声明和定义的,因此可以从整个窗口中的任何位置访问。
本地/功能范围
一个 曾是
变量有 功能范围 如果它是在函数内部定义的。
变量年龄 = 28; 功能问候(){
**var message = “你好”;**
控制台.log(消息); // 你好
} **控制台.log(消息); // ReferenceError: 消息未定义**
在上面的代码中,如果我们尝试访问 信息
变量外 迎接
函数然后是 参考误差 被退回。这是因为变量的范围仅限于定义它的函数。因此,它不能从函数外部访问。虽然,在函数中,它确实打印了消息 功能范围 .
块范围
块是由 {} 分隔的一段代码,代码所在的位置。
**让年龄= 28;** 如果真实) {
**让年龄= 30;**
**让消息=“你好”;**
控制台.log(年龄); // 30
} 控制台.log(年龄); // 28
控制台.log(消息); // ReferenceError: 消息未定义
在 ES6 中, 让
和 常量
两者都有 块级作用域 .在上面的例子中,我们有两个 让
声明的变量 一样的名字 IE 年龄,
内部和外部 如果
堵塞。
什么时候我们 控制台日志
同样,我们看到两者都打印不同的值。这是因为两者都有自己的 块范围 .
此外,该 信息
内部声明的变量 如果
堵塞 不能在块外访问 并返回错误。这表明该范围 信息
变量是 限制在 **如果**
仅块,它是块级范围 .当我们声明一个 让
或者 常量
函数内部或作为函数一部分的代码块内部的变量。
“var”的问题
有 一个问题 我们看到的 曾是
.你能在下面的代码中识别它吗?
**变量年龄 = 28;** 如果真实) {
**变量年龄 = 30;**
控制台.log(年龄); // 30
} 控制台.log(年龄); // 30
如果我们查看上面的示例,它与我们使用的代码相同 让
我们的变量 块范围 例子。但是,这里的输出是不同的,因为两者 控制台日志
印刷 30
代替 28
& 30
不像 让
变量。
这是我们看到的主要问题之一 曾是
在哪里 覆盖 下一个 曾是
用 声明的变量 一样的名字 在不属于函数的块内。 这是因为 **曾是**
在不属于函数的块内声明的变量将获得全局范围 .
因此,在 ES6 之后,使用 曾是
大部分被避免,并且 让
和 常量
被使用。虽然, 曾是
ES6 仍然支持不支持最新 ES6 功能的旧代码和浏览器。
感谢您的阅读。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明