let和const声明变量

let、const用法类似于var,但所声明的变量(const声明的是常量,以下不再做说明)只能在命令所在代码块内使用。

 例:var声明变量的for循环

var a=[];

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

    a[i]=function(){console.log(i)}

};

console.log(i,"我是var声明的变量i");

a[6]();

 //10 "我是var声明的变量i"

 //10

 例:let声明变量的for循环

var a=[];

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

    a[b]=function(){console.log(b)}

};

a[6]();

console.log(b,"我是var声明的变量b");

 //6 

 //Uncaught ReferenceError: b is not defined


let、const不存在变量提升

        例:var声明变量

console.log(c);//输出undefined

 var c=1;

var tmp = new Date();


function f() {
  console.log(tmp);//函数f执行后,输出结果为undefined,原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量。
  if (false) {
    var tmp = 'hello world';
  }
}
f(); // undefined


 例:let声明变量

        console.log(d);//报错ReferenceError

         let d=1;

暂时性死区

        ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

 例:

var tmp=123;

if(true){

tmp=234;  //报错ReferenceError,tmp is not defined

let tmp;

}

  例:

var tmp=123;

if(true){

let tmp;

tmp=234;  

console.log(tmp); //234

}


不允许重复声明

例:function func() {
          let z = 10;
          var z = 1;

    }

    func();//报错 Uncaught SyntaxError: Identifier 'z' has already been declared


let声明的变量属于块级作用域

        例:function f1() {
                  let n = 5;
                  if (true) {
                      let n = 10;
                  }
                  console.log(n); // 5  (如果是var声明的变量会输出10);

                }

        这表示外层代码块不受内层代码块的影响


const声明的是一个只读的常量,一旦声明,常量的值不能改变且必须立即初始化,不能留到以后赋值。

        例:const PI = 3.1415;
              PI // 3.1415

              PI = 3;//报错 Uncaught TypeError: Assignment to constant variable.

              const a;//报错 Uncaught SyntaxError: Missing initializer in const declaration








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值