最近在自学ES6部分,就想对var,let,const三个变量进行一个总结。 如下
var变量
var变量的特点
1.var变量不会创建块级作用域
2.var变量具有变量提升的情况
let变量
let是镜像于var的语法,var怎么用,let就怎么用。 二者的区别主要在于
1.var是有变量提升 let 没有
// console.log(a); // undefined
// console.log(b); // Cannot access 'b' before initialization
var a = 1;
let b = 2;
2.var 变量可以声明多次,但let变量只能声明一次
var a = 1;
let b = 2;
// var变量可以声明多次,但let只能声明一次
var a = 100;
// let b = 3; //Identifier 'b' has already been declared
3.let会创建块级作用域,并且let的主要作用并不是创建变量 而是创建块级作用域 将变量限定
在一个{ } 中 如下
let (b) {
} // 示意代码 这是一个未被标准化的操作
针对let变量的特性,建议在代码开头的位置 声明let变量
const变量
es6中除了let以外,还可以使用const创建块级作用域,它与let的区别在于 const可以创建 不可修改的常量
1.const 所对应的常量不可修改
const PI =3.14;
//常量不可修改
PI = 3.1415926 // // Assignment to constant variable.
2.在js中的常量和其他语言的常量并不太一样,js中的常量限定的是变量指向,而不是指向的值。
拿引用数据类型来说
const arr = [1,2,3];
arr[0] = 'a'; // 这里0下标储存的值被成功的修改了
console.log(arr); // ['a',2,3]
// 将arr变量指向新的地址
const arr = 1000; // Assignment to constant variable. 这是const所不允许的
鉴于const变量的特性,对于所有的引用数据类型都可以使用const声明