ES6的let,const,var的区别

一.let  和  const  ( ES6新的 )

1.含义:

let是用来声明变量--代替var来声明变量,还可以重新赋值

const是constant的缩写,它是来声明常量的,常量是不能重新赋值的

  const注意:

    const一旦声明,就必须立即初始化,不能留到以后赋值

    const声明的常量,可以修改值!!!但是不能重新赋值!!!

    const person = { username : 'yjx' }

      person.username = '你好'

    console.log( person ) // 得到   { username  : '你好' }

 

二.let 和 const 与 var 的区别

1. var 可以重复声明; let和const不能重复声明

  --  重复声明,就是已经存在的变量或者常量又声明一次

例子:

  var  a = 1;

  ......

  var a = 2 ;  没问题

 

  let  a  =  2;

  .....

  let a =  4  这就会报错了哦

 

2. var 会提升变量的声明( 声明提升到当前作用域的顶部--赋值并没有提升 ),let和const没有

例子:

  console.log( a )

  var  a   =  10

  ====>它会这样:

  var a 

  console.log( a )   undefined

  a = 10 

 

3.let 和 const 有暂时性死区 ; var 没有

 暂时性死区: 只要作用域内存在let const , 它们所声明的变量或常量就自动 ' 绑定 ' 这个区域 , 不再受到外部作用域的影响

 例子 : 

  let  a  =  1 ;

  function btn( ) {

    console.log( a )

    let  a  = 3 ; 

  }

  btn( ) 

  这样 :  a 就不会再向外层作用域寻找了,所以这里的a就是报错了 ;

     如果这个的let a = 3 ; 变成 var 的话 , 那么就是 undefined ;   

     如果 let a = 3 不要的话,那么就向外层寻找,得到的就是1 ; 

  

4. 在全局作用域中 , var 声明的变量,通过 function 声明的函数,会自动变成window对象的属性或方法

 例子:

  var age = 18

  window.age  // 得到 18

  let age1 = 21

  window.age1 // undefined

 

5.块级作用域( 重点 )  { } , for循环,while,if,switch , function... 是一个作用域 ( 块级,函数,全局作用域 ) 记得对象不是

  var  没有块级作用域

 例子:

  for( var i=0 ; i <=3; i++){}

  console.log( i ) // 4

  let 和 const 有块级作用域

 例子:

  for( let i=0 ; i <=3; i++){}  因为是let , 所以就变成一个块级作用域了,外面的找不到里面的

  console.log( i ) // 报错,没有定义这个i

 

  作用域这里就不解释了(一层一层往外找,简单)

 

 

  

 

posted @ 2022-01-18 10:10  杨建鑫  阅读(186)  评论(0编辑  收藏  举报