返回顶部
首页 > 资讯 > 前端开发 > JavaScript >ECMAScript中varletconst常见问题及区别详解
  • 179
分享到

ECMAScript中varletconst常见问题及区别详解

ECMAScript中varletconst区别varletconst常见问题 2023-02-02 18:02:44 179人浏览 八月长安
摘要

目录引言一:作用域二:优先级三:全局声明区别四:变量提升其他:引言 在ECMAScript中,有3个关键字可以用于声明变量。分别是:var、let和const。其中,var在所有E

引言

在ECMAScript中,有3个关键字可以用于声明变量。分别是:var、let和const。其中,var在所有ECMAScript都是可以使用的,但是let和const需要在ECMAScript6及其以上版本才可以使用。

let和const的行为基本一致,但是其中有一个比较重要的一个区别,就是const用它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行错误。所以常有人直接理解为const用于声明常量。

一:作用域

var是函数作用域。

let和const是块级作用域。

也就是说var声明的变量出函数时就会被销毁,而let和const声明的变量出块级内部就会被销毁。

下面使用for举例:

for中的变量声明,也是var和let的区别之一。

 for (var i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i);
            }, 0);
        } //5 5 5 5 5
        for (var i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i);
            }, 0);
        } //0 1 2 3 4

 造成这种现象的原因就是:var可以渗透到循环体外部,在退出循环的时候,迭代变量保存的是导致循环退出的值。而let的是因为作用域反限于for循环块的内部,迭代循环声明一个新的变量,每个setTimeout引用的都是不同的变量实例。

二:优先级

三个关键字之间没有优先级,按照声明顺序。

三:全局声明区别

let和var的不同是,let不会成为window对象的属性。

        var name = "Matt".
        console.log(window.name); //Matt
        let name = "Matt"
        console.log(window.name);//undefined

四:变量提升

这也就是let和var的一个重要的区别,就是let声明的变量不会在作用域中被提升。

        console.log(name); //undefined
        var name = "Matt";
        console.log(name); //ReferenceError: name is not defined
        let name = "Matt"

 在代码解析时,javascript引擎也会注意到后面的let(也就是常谈到的“类似提升行为”),只不过在此之前不能操作这个被声明的变量,不然就会送给你漂亮的红色ReferenceError。而这个瞬间也被称之为“暂时性死区”。也算是在某些方面限制了代码的规范度吧。

其他:

1.在es6中明确规定,在{}中出现let和const,就会被限制在里面(也就是块级作用域)。

2.函数提升优先级大于var的变量提升(还是不要重名比较好,你想想要是你们部门有人和你重名重姓会多麻烦)。

以上就是ECMAScript中var let const常见问题及区别详解的详细内容,更多关于ECMAScript中var let const区别的资料请关注编程网其它相关文章!

--结束END--

本文标题: ECMAScript中varletconst常见问题及区别详解

本文链接: https://lsjlt.com/news/194044.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作