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

本文链接:https://www.qanswer.top/20720/39100700

posted @ 2022-09-07 00:39  哈哈哈来了啊啊啊  阅读(79)  评论(0编辑  收藏  举报