##ES6简介
ES6(ECMScript6.0)是JavaScript语言的标准,已经在2015年6月正式发布。目标为的是能够成为企业开发型语言。
–关于js声明变量和赋值顺序
1、代码的检查装载阶段(预编译阶段),此阶段进行变量和函数的声明,但是不对变量进行赋值,变量的默认值为undefined。
2、代码的执行阶段,此阶段对变量进行赋值和函数的声明。
–对于块作用域的了解
if代码块的外部使用外层的tmp变量,内部使用内层的tmp变量。但是,函数f执行后,输出结果为undefined,原因在于变量提升,导致内层的tmp变量覆盖了外层的tmp变量。
一直很好奇变量提升是啥
看到这段代码
var tmp = 123;
function f() {
console.log(tmp);(1)
if (false) {
var tmp = 'hello world';
console.log(tmp)(2)
}
}
f(); // undefined
写了一下之后,看到(1)tmp是未定义,是在此作用域中只是声明还未定义,但是(2)是已经复制了,将此123的值改为了hello world并且从if的作用域 升到了 整个js全局
晚上豁然开朗!!!
本人前端小白,有什么不对的地方请指出!谢谢