• 技术文章 >web前端 >前端问答

    es6中let和const的区别有哪些

    青灯夜游青灯夜游2022-04-19 16:29:23原创77

    区别:1、let声明的是变量,其值和类型都可以改变,而const声明的是常量,不可以改变,不能重新赋值;2、let变量,声明后可以不初始化,而const常量,一旦声明,就必须立即初始化;3、const总是指向一个固定的地址,而let不固定。

    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

    let和const是在es6中新引入了两种方式来申明变量的关键字,虽然我们仍然可以使用广为传诵的var变量,但是现在我们有了两种更牛的工具去使用:let和const。

    es6中let和const的区别

    ① let声明的是变量,其值和类型都可以改变;const声明的是常量,其值和类型都不可以改变。

    ② let变量,声明后可以不初始化,而const常量,一旦声明,就必须立即初始化,不能以后再赋值。

    const i ; // 报错,一旦声明,就必须立即初始化
    const j = 5;
    j = 10; // 报错,常量不可以改变

    ③ const总是指向一个固定的地址,而let不固定

    const foo = {};
     
    // 为 foo 添加一个属性,可以成功
    foo.prop = 123;
    foo.prop // 123
     
    // 将 foo 指向另一个对象,就会报错
    foo = {}; // TypeError: "foo" is read-only

    上面代码中,常量foo储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。

    说明:

    数组和对象等复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const只保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个复合类型的变量声明为常量必须非常小心。

    const arr = [];
    // 报错,[1,2,3]与[]不是同一个地址
    arr = [1,2,3];
    const arr = [];
    // 不报错,变量名arr指向的地址不变,只是数据改变
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    console.log(arr.length); // 输出:3

    es6中let和const的相同点:

    ① 只在声明所在的块级作用域内有效。

    ② 不存在声明提升,同时存在暂时性死区,只能在声明的位置后面使用。

    <script type="text/javascript">
    console.log(dadi);
    let dadi = 569;
    </script>

    结果:会报错

    1.png

    ③ 不可重复声明。

    【相关推荐:javascript视频教程web前端

    以上就是es6中let和const的区别有哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:ES6
    上一篇:node中token是什么意思 下一篇:node环境和浏览器环境有什么区别
    Web大前端开发直播班

    相关文章推荐

    • ES6怎么修改数组中的某个元素• es6的set和map的区别是什么• es6中let与var的区别是什么• 强推:20个值得收藏的ES6小技巧• 什么是es6模块化• ie8是否支持es6• es6中数组新增常用的4个方法是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网