ES6只有六种声明变量的方法:php
var
命令和code
function
命令,blog
let
和内存
const
命令,作用域
import
命令和get
class
命令。因此,ES6一共有6种声明变量的方法。it
const
声明一个只读的常量。一旦声明,常量的值就不能改变。io
const
声明的变量不得改变值,因此const一旦声明变量,就必须当即初始化,不能留到之后赋值console
在ES6中let
命令,用来声明变量。用法相似于function
var
,可是所声明的变量,只在
let
命令所在的代码块内有效。
{ let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1
let不存在变量提高。
let
不像
var
那样会发生“变量提高”现象。因此,变量必定要在声明后使用,不然报错。
console.log(test1); // 输出undefined console.log(test2); // 报错ReferenceError var test1= 2; let test2= 2;
暂时性死区。只要块级做用域内存在
let
命令,它所声明的变量就“绑定”(binding)这个区域,再也不受外部的影响。
var tmp = 123; if (true) { tmp = 'qq'; // ReferenceError 在 let
声明变量前,对
tmp
赋值会报错
let tmp;
}
ES6明确规定,若是区块中存在 let
和
const
命令,这个区块对这些命令声明的变量,从一开始就造成了封闭做用域。凡是在声明以前就使用这些变量,就会报错。
if (true) { // TDZ开始 tmp = 'abc'; // ReferenceError console.log(tmp); // ReferenceError let tmp; // TDZ结束 console.log(tmp); // undefined tmp = 123; console.log(tmp); // 123 }
转载于猿2048:➪《ES6笔记01-声明变量》