01-let关键字|ES6~ES13学习笔记

103 阅读2分钟

ES6-let关键字

let用来声明变量,类似于var

1. let变量必须先声明后使用(没有变量提升,没有预先解析)

        var a = 10;
        let b = 20;
        console.log(a);
        console.log(b);

打开浏览器审查看一下正常的效果吧! image.png 以下是错误示范

使用var变量后声明时显示的是undefined

        console.log(c);//undefined
        var c = 9;

image.png 使用let变量后声明时会报错

        console.log(d);
        let d = 9;

image.png

2. let不允许在同一作用域下重复声明变量,否则会报错

首先我们来看看var重复声明会怎么样

        var e = 100;
        var e = 101;
        console.log(e);

image.png 可以看见,使用var声明,控制台只会打印后面的101,说明会覆盖掉前面声明的变量,它不会给你报错,这也正是它的弊端

再来看看使用let重复声明变量

        let f = 100;
        let f = 101;
        console.log(f);

image.png

3. let声明的变量拥有块级作用域(提一嘴:var是全局和函数作用域)

使用原来的var定义,并在外面打印结果

        if (true) {
            var numA = 100;
        }
        console.log(numA);

image.png 使用let来看看,会怎么样

        if (true) {
            let numB = 200;
        }
        console.log(numB);

image.png 结果显示 numB is not defined,这样会报错,函数外面是没有定义numB的,调用处已经不在它的作用域内了。

我们再来举一个例子

        for (var i = 0; i < 10; i++) {

        }
        console.log(i); //10

        for (let j = 0; j < 10; j++) {

        }
        console.log(j); //报错

image.png

这里我们引入一个概念“暂时性死区”,啥意思呢?在代码块内,使用let声明变量之前,该变量都是不可用的,声明变量之前可以理解成暂时性死区

        let numC = 66;
        if (true) {
            console.log(numC); //报错,必须先声明后使用,这个区域暂时性死区
            let numC = 77;
        }

image.png

src=http___c-ssl.duitang.com_uploads_item_201807_13_20180713114316_mkkoe.thumb.400_0.gif&refer=http___c-ssl.duitang.gif

喜欢我的话,多多为我点赞吧!你的支持和鼓励是我前进的最大动力,有疑问欢迎评论区留言。