ES6 中的 let 和 const 的简单理解

319 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

1、在javascript中声明变量是 使用var关键字声明的,javascript中的变量可以存储任意的数据类型数据;存在变量提示、变量覆盖、全局变量污染、容易造成内存泄露等问题。

2.es6中通过let、const 来声明变量,有效的解决了var声明带来的问题。

以下通过例子简单来理解:

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

//属于块级作用域,没有变量提升

function test(){

  for(let i=1;i<3;i++){ //这个括号内属于块级作用域,let 声明的变量只在其的作用域内有效
    console.log(i);  // i 的值 为 1、 2
  }

  console.log(i);  // 由于脱离了作用域,访问不到块级作用域里的i , 所以 i 为undefined
 
}


如果将 let 换成了 var, 则结果如下
function test(){
  for(var i=1;i<3;i++){ 
    console.log(i);  // 1  2
  }

  console.log(i);  // 3

}

2、let 

//使用let 声明的变量不能重复声明

{
  let a = 1;
  let a = 2;  
console.log(a) // 报错
}

3、 const 


function test(){        
  
  //  使用const 声明的变量必须赋值
  const w;   
  w = 123 ;
  console.log (w) // 报错

}

function test(){        
  

  // 使用 const 声明的变量如果为数值,则不可修改
  const PI=3.1415926;   
  PI = 66console.log (PI)  //  报错, 'PI' is read-only 

  
}
function test(){

  // 但是如果声明的是对象,因为对象是引用类型,返回值为对象内存的指针,声明的这个对象
  // 对象存储的是指针,指针是不变的,对象的内容是可以改变的
  const k={           
    a:6                 
  }
  k.b=8;
  console.log(k);  // 输出的值为 6   8
}