ES6-ES11 | 青训营笔记

24 阅读1分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

1、let声明

定义变量 let 标识符;
(1)let变量不可重复声明

let name='zxt'
let name='ljx'

这时就会显示错误(如下图)

image.png 但是对于var来说却可以重新定义

var name='jxj'
var name='lxy'    

此时没有任何问题

image.png (2)let为块级作用域

    {
        let sex='男'
    }
    console.log(sex)

此时的结果如下图所示:

image.png 但是对于var声明变量来说却没有

 {
        var sex='男'
    }
    console.log(sex)

image.png (3)let不存在变量提升

console.log(sex)
let sex = '男'

此时就会报错

image.png

但是对于var来说,具有变量提升,虽然不会报错,但是会显示undefined

console.log(sex)
var sex = '男'

此时的结果如下图所示:

image.png

(4)虽然let声明变量是块级作用域,但是并不会影响作用链的效果

                let age = 20
                let information=function(){
                    return age
                }
                information()

2、const 定义常量

const 标识符
(1)定义常量一定要赋初值
如果不赋初始值的时候就会报错

'const' declarations must be initialized.

(2)定义常量的时候,标识符一般会全大写
(3)常量值不可修改
如果修改之后就会报错 Cannot redeclare block-scoped variable 'age'.

const age=21
const age=21

但是对于数组和对象的元素进行修改,不算是对常量进行修改
举个数组例子

const information=['sex','age']
information.push('name')

此时不会报错 再举一个对象的例子

                const obj={
                    sex:'男',
                    age:20
                }
                obj.age=21
                console.log(obj)

此时的结果如图所示

image.png

(4)也是块级作用域