ES6 let 与 const 区别

ES6 let 与 const 区别

let 命令

let 是在自身所在的代码块内有效。
因此 for 循环计数器就很适合用 let 声明。

用法:

{
  let a = 0;
  a		//0
}
a		//报错

特点:

  1. 它不允许在相同作用域内,重复声明同一个变量,在函数内部对同一个变量重复声明会报错。
// 报错
function func() {
  let a = 10;
  var a = 1;
}
// 报错
function func() {
  let a = 10;
  let a = 1;
}
  1. 它不存在变量提升,先使用后声明会报错。
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错
let bar = 2;

  1. 暂时性死区,只要块级作用域内存在let命令,它所声明的变量就绑定这个区域,不再受外部的影响。
var tmp = 123;
if (true) {
  tmp = 'abc'; // 报错
  let tmp;
}

const 命令

const 是声明一个只读变量,声明后不允许改变。
并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。
一旦声明必须初始化,否则会报错。

用法:

const PI = 3.1415;
PI 		// 3.1415
PI = 3;	//报错

特点:

  1. const声明的变量不得改变值。

  2. 一旦声明变量,就必须立即初始化,不能留到以后赋值,只声明不赋值会报错。

const foo;
// SyntaxError: Missing initializer in const declaration
  1. 与 let 一样不允许在相同作用域内,重复声明同一个变量。
var message = "Hello!";
let age = 25;
// 以下两行都会报错
const message = "Goodbye!";
const age = 30;
  1. 暂时性死区,ES6有明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量之前使用它会报错。
if (true) {
  console.log(MAX); //报错
  const MAX = 5;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值