Blogger Information
Blog 33
fans 0
comment 0
visits 49794
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ES6 let 与 const声明
Lon
Original
536 people have browsed it

ES6 let 与 const声明

了解更多请访问https://www.runoob.com/w3cnote/es6-let-const.html

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: letconst
let 声明的变量只在 let 命令所在的代码块内有效。
const 声明一个只读的常量,一旦声明,常量的值就不能改变。

一.let声明
1、代码块内有效

let 是在代码块内有效,var 是在全局范围内有效

  1. // ES6 新增了一个新的变量声明:let,它和 var 变量声明非常的类似
  2. //块级区域
  3. {
  4. var value = 10;
  5. let count = 20;
  6. }
  7. console.log(value); //10
  8. console.log(count); //报错

2、不能重复声明

let 只能声明一次 var 可以声明多次

  1. // var 声明可以重复声明同一个变量,后面会取代前一个变量
  2. // let 声明不可以重复声明一个变量,会直接报错,就算其中一个是 var
  3. let a = 1;
  4. let a = 2;
  5. var b = 3;
  6. var b = 4;
  7. console.log(a); //报错
  8. console.log(b); //4

3、不存在变量提升

let 不存在变量提升,var 会变量提升

  1. // let 声明方式,就算在后面声明,前面的输出依然是引用错误
  2. console.log(value); //undefined
  3. var value; //变量提升导致逻辑怪异
  4. console.log(count); //引用错误
  5. let count;

变量 value用 var 声明存在变量提升,所以当脚本开始运行的时候,value 已经存在了,但是还没有赋值,所以会输出 undefined。
变量 count 用 let 声明不存在变量提升,在声明变量 count 之前,count 不存在,所以会报错。

4、暂时性死区

ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。码块内,在声明变量 value 之前使用它会报错。
如果在 let 声明前使用变量,这段区域被称为“临时死区(或暂时性死区)。

  1. var vlaue = 20;
  2. if(true){
  3. //死区开始
  4. console.log(value);
  5. //死区结束
  6. let value = 10
  7. console.log(value);
  8. }

5、实例

在循环中,var 和 let 的区别尤为明显,let 只在循环内部有效。
var 全局有效,导致后续再使用 i 会引起干扰,而 let 则不会。

  1. for (var i = 0; i < 10; i++) {
  2. setTimeout(function(){
  3. console.log(i);
  4. })
  5. }
  6. // 输出十个 10
  7. for (let j = 0; j < 10; j++) {
  8. setTimeout(function(){
  9. console.log(j);
  10. })
  11. }
  12. // 输出 0123456789

变量 i 是用 var 声明的,在全局范围内有效,所以全局中只有一个变量 i, 每次循环时,setTimeout 定时器里面的 i 指的是全局变量 i ,而循环里的十个 setTimeout 是在循环结束后才执行,所以此时的 i 都是 10。
变量 j 是用 let 声明的,当前的 j 只在本轮循环中有效,每次循环的 j 其实都是一个新的变量,所以 setTimeout 定时器里面的 j 其实是不同的变量,即最后输出 12345。(若每次循环的变量 j 都是重新声明的,如何知道前一个循环的值?这是因为 JavaScript 引擎内部会记住前一个循环的值)。

二、const 声明

const 声明的作用是:创建一个只读的常量,一旦声明不可改变;
和 let 声明一样,const 声明的常量无法提升,也存在临时死区;
和 let 不同的是,const 声明后必须立刻赋值,否则会报错;

1、基本用法

  1. const PI = 3.14;//常量约定俗成大写
  2. console.log(PI);
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post