了解 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 版权协议,转载请附上原文出处链接和本声明

浙公网安备 33010602011771号