1.let部分
代码块内的暂时性死区是因为检测到了let命令吗?(感觉像是let提升在最顶部)
如果是用var声明的就不存在暂时性死区吗?(应该没有)
function bar(x = y, y = 2) { return [x, y]; } bar(); // 报错
(不懂上面的编译过程)
if(1){ tmp=1 } console.log(tmp);//1 if(0){ tmp=1 } console.log(tmp);//Uncaught ReferenceError: tmp is not defined if(1){ var tmp=1 } console.log(tmp);//1 if(0){ var tmp=1 } console.log(tmp);//undeifined
总而言之,不加var的变量虽然可以成为全局变量,但是不会进行变量提升
2.知识点
不存在变量提升,存在暂时性死区TDZ
不能重复声明
形成块级作用域
const命令的本质是变量指向的那个内存地址不得更改
ES6声明变量的六种方法:let const var function import class