【ES6】 let与const详解

简介: 【ES6】 let与const详解

ES6】 let与const详解


ES6,全称为ECMAScript6。ES6与js的关系是:前者是后者的规格,后者是前者的实现。换句话说,ES是js的国际化版本,js是ES的子集。

1. let


let命令和var命令是差不多的,都是定义变量。

let var
示例 let a=1; var a=1;

但是,let命令有4点注意点与var相区别:

【1】let作用域let声明的变量只在其所在的代码块有效。

【2】let变量需声明。变量提升问题。

【3】let存在暂时性死区,会封闭变量名相同的全局变量。

【4】let不可重复声明。

下面给出以上4点对应的代码解释:

//【1】let的作用域。
//示例一:用let定义的变量,在其作用域之外时,变量是不存在的
  if(true)
  {
    let a=1;
    var b=2;
    console.log(a);//1
    console.log(b);//2
  }
  console.log(a);//a is not defined
  console.log(b);//2
//示例二:在代码块中用var定义的变量i,在作用域外仍然存在。但是用let定义则不存在
  for(var i=0;i<10;i++){
  }
  console.log(i);//10
  for(let i=0;i<10;i++){
  }
  console.log(i);//i is not defined
//【2】let变量需声明
  /*例如,用var定义变量时,即使声明语句在使用变量的语句下面也可以。形象称为
   *变量提升,即把声明语句提前。
   */
  console.log(a);//10
  var a=10;
  /*但是,let语句的声明必须在前面,不然会报错。
   */
  console.log(a);//ReferenceError
  let a=10;
//【3】let存在暂时性死区
  /*定义全局变量t=10,在其他块级作用域内用let再定义t,此时内部t会屏蔽外部t
   *的内容,当跳出块级作用域回到全局时,变量t依旧是全局变量。
   */
  var t=10;
  if(1){
    let t=2;
    console.log(t);//2
  }
  console.log(t);//10
//【4】let不可重复声明
  {//报错
    let z=1;
    var z=2;
  }
  {//报错
    let z=1;
    let z=2;
  }
  function(x){//报错
    let x;
  }
  function(x){//不报错
    {
      let x;
    }
  }

2. const


const命令用来声明常量,一经声明则不能改变。

【1】2次声明则报错。

const PI=3.14;
PI=3;
//TypeError:"PI" is read only 只读

【2】声明而不初始化则报错。

const PI;
//SyntaxError: missing = in const declaration 未初始化

【3】const的作用域与let相同,只在声明的作用域有效。

【4】const声明的常量同样不能提升,存在暂时性死区,只能在声明之后使用。

【5】**注意:**对于复合型的变量,变量名不指向数据,而指向数据所在的地址。const只是保证变量的地址不变。

const con={};
con.id='123';//可执行,添加属性
con={};//错误,更改了地址
const array=[];
array.push('1');//可执行
array.length=0;//可执行
array=["1"];//不可执行

查看更多ES6教学文章:


1. 【ES6】let与const 详解

2. 【ES6】变量的解构赋值

3. 【ES6】字符串的拓展

4. 【ES6】正则表达式的拓展

5. 【ES6】数值的拓展

6. 【ES6】数组的拓展

7. 【ES6】函数的拓展

8. 【ES6】对象的拓展

9. 【ES6】JS第7种数据类型:Symbol

10. 【ES6】Proxy对象

11. 【ES6】JS的Set和Map数据结构

12. 【ES6】Generator函数详解

13. 【ES6】Promise对象详解

14. 【ES6】异步操作和async函数

15. 【ES6】JS类的用法class

16. 【ES6】Module模块详解

17. 【ES6】ES6编程规范 编程风格

参考文献


阮一峰 《ES6标准入门(第2版)》

相关文章
|
6月前
ES6中的var,let,const
ES6中的var,let,const
|
6月前
|
安全 JavaScript 前端开发
ES6 中 let 与 const命令
ES6 中 let 与 const命令
|
2月前
|
JavaScript 前端开发
ES6学习(1)let,const
ES6学习(1)let,const
|
6月前
|
JavaScript 编译器
TS中const和readonly的区别
TS中const和readonly的区别
114 0
|
6月前
|
JavaScript IDE 开发工具
es6学习笔记(一)let、const
es6学习笔记(一)let、const
|
JavaScript 前端开发 安全
ES6(let和const命令)
ES6(let和const命令)
77 0
|
自然语言处理 JavaScript 前端开发
每天3分钟,重学ES6-ES12(二)var let const的选择
每天3分钟,重学ES6-ES12(二)var let const的选择
90 0
|
JavaScript 前端开发
ES6——let、const
ES6——let、const
109 0
|
JavaScript
ES6中let与const的区别
ES6中let与const的区别