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);

更多相关文章

  1. 1.仿小米商城 2.预习js变量与基本数据类型
  2. JavaScript 基本了解
  3. VSCode 中,TS 提示 ”无法找到 *.vue 声明文件“ 的解决方案
  4. 变量与函数
  5. JavaScript快速入门
  6. PHP-03变量与常量
  7. PHP变量类型及类型转换
  8. 项目中全局变量的灵活用法
  9. 接口管理进阶-环境变量的使用

随机推荐

  1. Android画图学习总结(一)——类的简介
  2. Android 中文 API (100) ―― ScrollView
  3. Android(安卓)App快速启动
  4. Android 6.0发布大会来了,来看看Android 6
  5. Google 的设计主管谈开发中的 Ice Cream
  6. Android(安卓)SurfaceFlinger学习文档
  7. Android 蓝牙开发(整理大全)
  8. Android自学之路,ToolBar的使用标题居中颜
  9. Android O / Android 8.0 新特性及开发指
  10. 阅读《Android(安卓)从入门到精通》(11)—