ES6学习day01:let和const的特点及其区别

版权声明:转载请标明出处 https://blog.csdn.net/w1418899532/article/details/84717091

let 和 const是ES2015(ES6) 新增加的两个重要的 JavaScript 关键字。

1.let命令特点:

1.ES6新增let命令。
用来声明变量,用法类似var,但是它所声明的变量只在let命令所在的代码块内有效。使用方法如下:
在这里插入图片描述
2.不存在变量提升。
let不像var那样,会发生"变量提升"现象。
通过如下程序分析:

let不存在变量提升
上面ES5和ES6两种写法只有c是var声明的,d是let声明的。输出结果为:
在这里插入图片描述
问题:
a[5]();输出为9,b[5]();输出为5。为什么呢?为什么a[5]();输出不是理想中的5呢?
答案:
因为上述ES5写法循环结束的时候i的值已经为10,c=9,调用a[5]();时i是循环结束时的值,c=9,因此输出是9。

而d变量是由let声明,只在循环体内部起作用,在外部不起作用,影响不了外部的d,所以在调用第5个d时,值为5.
可以通过debug断点调试程序,帮助理解,循环结束d变为未定义,如下图
在这里插入图片描述

3.暂时性死区。
只要块级作用域内存在let命令,它所声明的变量就“绑定(binding)”这个区域,不再受外部的影响。
例如:
在这里插入图片描述
块级作用域内存在let命令,它所声明的变量就不受外界影响,如下情况,a输出仍然为100。
在这里插入图片描述

4.不允许重复声明。
let命令不允许在相同的作用域内,重复声明同一个变量。
在这里插入图片描述

【注意】在 ES6 之前,JavaScript 只有两种作用域: 全局变量 与 函数内的局部变量

2.const命令

const和let一样具有只在块级作用域有效、不存在变量提升、暂时性死区、不可重复声明这四个特点。使用方法也和let命令相同。

  • const定义常量和let定义的变量相同点:
    1.二者都是块级作用域。
    2.都不能和它所在作用域内的其他变量或函数拥有相同的名称。

  • 两者不同点:

    1.const声明的常量必须初始化,而let声明的变量不用。
    2.const 定义常量的值不能通过再赋值修改,也不能再次声明。而 let 定义的变量值可以修改。

在这里插入图片描述

  • 特性:
    const 声明一个只读的常量,一旦声明,常量的值就不能改变。
    在这里插入图片描述

  • const声明对象
    const可以声明一个对象和数组。
    实例如下:
    在这里插入图片描述

  • 对象的冻结
    1.冻结方法
    可以使用Object使const对象冻结。
    在这里插入图片描述

2.使用对象冻结
在内部封装好对象,输出时就会有内容输出。
在这里插入图片描述

  • const并非真正的常量
    const 的本质:
    const 定义的变量并非常量,并非不可变,它定义了一个常量,引用一个值。使用 const 定义的对象或者数组,其实是可变的。

    1.对象操作

    如下修改对象属性值和增加属性并不会报错:
    在这里插入图片描述
    输出结果为:
    在这里插入图片描述

    但是不能对常量对象重新赋值。!!! 如下:
    在这里插入图片描述

    2.数组操作
    如下修改数组元素和增加元素并不会报错:
    在这里插入图片描述
    输出结果为:
    在这里插入图片描述
    但是不能对常量数组重新赋值。!!! 如下情况会报错。
    在这里插入图片描述

每天进步一点点、快乐充实一点点、开心一点点!加油!The Girl!

猜你喜欢

转载自blog.csdn.net/w1418899532/article/details/84717091