2.1 let命令

2.1.1 基本用法

1:let声明的变量只在所在的代码块内有效;
这里写图片描述
2:var解析
这里写图片描述

if(true){
    var a=10
}
console.log(a)   、、10
for (var i = 0; i < 3; i++) {
     setTimeout(function () {
         console.log(i);     //3个3
     }, 0);
 }

3:
这里写图片描述
4:
这里写图片描述
5:var的作用域还是跟以前一样,只不过for循环比较特殊;
这里写图片描述

2.1.2 let命令不存在变量提升

这里写图片描述

2.1.3 暂时性死区

ES6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭的作用域;只要在声明之前使用这些变量,就会报错;
暂时性死区的本质就是:只要进入当前作用域,所要使用的变量就已经存在,但是不可以获取,只有等到声明变量的那行代码出现以后,才可以获取、使用这些变量;
这里写图片描述

2.1.4 不允许重复声明

//以下三种方式全部报错  Uncaught SyntaxError: Identifier 'a' has already been declared
    function run1(){
        var a=10;
        let a=20;
    }

    function run2(){
        let a=10;
        var a=20;
    }

    function run3(arg){
        let arg=20
    }


//这种方式是正确的
    function run4(arg){
        {
                let arg=20
        }

    }
console.log('6666')
    //err:Identifier 'y' has already been declared;虽然不进行预解释,但是代码执行前也是先将定义的变量提前过滤一遍,一旦发现不合法的值就直接报错;代码也不会执行;所以6666也不会打印
    console.log(y);
    let y=10
    let y=30

let 声明的变量不会给全局当做属性

 //let 声明的变量不会给全局当做属性
    let b=1;
    console.log(window.b);   //undefined

块级作用域

    //for(){},if(){},{}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值