ES6中变量let与const个人总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/fufu_dclt/article/details/102686940

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

待更…

猜你喜欢

转载自blog.csdn.net/fufu_dclt/article/details/102686940
今日推荐