ES6与javascript的关系
ES6是javascript的一种规范,而javascript则是ES6的一种实现!
变量提升
所有的声明都会提升到作用域的最顶上去
console.log(a)//undefinde
var a = 1
=
var a
console.log(a)//undefinde
a = 1
ES6的六种声明变量的方法(let const function class import var)
let
{
let a = 10;
var b = 1;
}
//let 只在自己声明的代码块中有效
a // ReferenceError: a is not defined.
b // 1
let存在“暂时性死区”(temporal dead zone,简称 TDZ)
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
if (true) {
// TDZ开始
tmp = 'abc'; // ReferenceError
console.log(tmp); // ReferenceError
let tmp; // TDZ结束
console.log(tmp); // undefined
tmp = 123;
console.log(tmp); // 123
}
const
const声明一个只读的常量。一旦声明,常量的值就不能改变
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个"内存地址"所保存的数据不得改动
const foo = {};
// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123
// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only