天天在用es6,但是自己还没有详细的做过一份知识点整理。 前两天写代码碰到await和async,傻眼了。。完全忘了是什么。。。 现在开始好好的整理一下,保不齐哪天es7出来,那我es6还没搞明白就不好了。。
let声明变量只在let命令所在的代码块内有效。
{ let a=10; var b=1; } a //error : a is not defined. b //1let声明的变量一定要在声明后使用,不存在变量提升。
暂时性死区:在代码块内,使用let命令声明变量之前,该变量都不可用。 在没有let之前,typeof是安全的,but现在如果在暂时性死区里,声明前使用会报错。
do表达式 因为块级作用域没有返回值,所以有个提案,让块级作用域变成表达式,可以返回值。
let x = do { let t = f(); t * t + 1; }(我试了一下,果然还只是个提案。。)
const命令 const声明一个只读的常量,声明后不可改变,所以声明时就得赋值。其他与let用法相似。 const保证的是变量指向的内存地址不得改动。简单的数据类型值就保存在变量指向的内存地址,对于复合型数据则保存的是指针,只能保证指针固定,对象本身是可以变动的。
// 只在声明所在的块级作用域内有效 if(true){ const a = 5; } a //Uncaught ReferenceError: a is not defined //声明不提升,存在暂时性死区 if(true){ console.log(a); // ReferenceError const a = 1; } //不可重复声明 var message = 'hello'; let age = 25; const message = 'hi' //报错 const age = 100 //报错es6–let和const命令文档地址