美文网首页
关于let和const

关于let和const

作者: keknei | 来源:发表于2017-06-23 22:08 被阅读24次

块级作用域

let所声明的变量,只在let命令所在的代码块内有效。很适合for循环,真是一大利器啊,经典案例选项卡走起

for (let i=0;i<aBtn.length;i++){
    aBtn[i].onclick=function (){
      for (let i=0;i<aBtn.length;i++){
        aBox[i].classList.remove('show');
        aBtn[i].classList.remove('active');
      }
      this.classList.add('active');
      aBox[i].classList.add('show');
    };
}

此时的aBox[i]中的i用的就是第一层let声明的i,简直爽翻天啊~

for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

for (let i = 0; i < 3; i++) {
   console.log(i);  ReferenceError
   let i = 'abc';
   console.log(i);//打印三次abc
}

此时的子作用域已经被i=abc占有,第一次console.log(i)的时候,明显就犯了变量提升的问题,所以会报错,个人建议如果不是太需要,不要用这个特性,好像貌似平时也用不上,呵呵哒~

不存在变量提升

console.log(a);//报错ReferenceError
let a=10;

let跟val不一样,不存在变量提升,这样会直接报错

不允许重复声明

var c=8;
let c=8;//Identifier 'c' has already been declared

let d=6;
let d=6;////Identifier 'd' has already been declared

用let声明的变量不允许重复声明,否则会报错

暂时性死区

var b=9;
 if (true){
   b=0;  //ReferenceError
   let b;
 }

只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
</br>


</br>

const拥有let的特性,另外还具备别let不具备的特性,下面让我们剖析一下

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const a=10;
a=0;//Assignment to constant variable.

果断报错,毋庸置疑

const声明的对象和数组的数据结构是可以改变的

const c={};
c.name='张三';
console.log(c);//{"name":"张三"}
c={};//Assignment to constant variable.

const d=[];
d.push('c');
console.log(d)//['c']
d=[1,2];//Assignment to constant variable.

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

</br></br></br>

今天就分享这些内容吧,不多,能大概了解下let和const常用的特性,希望对大家有所帮助谢谢~

万年不变的国际惯例:
如果大家想看更详细的资料,请狠狠的点击这里

</br></br>

相关文章

  • 我读ES6--变量声明

    1.关于var和let、const let、const与var一样,都是用来声明变量,但都有其特殊的用途。let ...

  • 关于let和const

    块级作用域 let所声明的变量,只在let命令所在的代码块内有效。很适合for循环,真是一大利器啊,经典案例选项卡...

  • let和const

    新的赋值语句let和const let和const命令

  • 工作中常用的 ES6 语法

    变量声明 let 和const 不用var, 用const声明只读变量,let声明变量。let和const都是块级...

  • 关于ES6以及ES6常用的方法

    1、变量声明let和const let表示变量、const表示常量。let和const都是块级作用域。 2、模板字...

  • ES6需要记忆理解的地方

    let和const命令 1、let和const均无变量提升。2、let变量指向的地址可变,const指向的地址不可...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

  • ES6这些就够了

    1.变量声明const和let let表示变量、const表示常量。let和const都是块级作用域 2.模板字符...

  • 【JS】从ECMA学习let、const、var变量声明与声明提

    let、const、var是JS中的声明关键字 let和const 我们熟知的let和const的特性,常见的就有...

  • ES6编码风格

    http://es6.ruanyifeng.com/#docs/style let和const let和const...

网友评论

      本文标题:关于let和const

      本文链接:https://www.haomeiwen.com/subject/efhhcxtx.html