第一点:js中的undefined代表着两种意思:第一种就是大家所理解的未定义;第二种是已经定义了,但是变量还没有初始化。
if (!("a" in window)) { var a = 1;}alert(a);
弹出结果是undefined。这是滴意思就是变量还没有初始化。
alert(a);
var a='a';
上面的结果是a;其中,var a=a,可分为两步执行,第一步声明变量:var a,第二步赋值:a=1;
综上,在第一部分代码中,var a=1;其实可分为两步执行;第一步 var a; 第二步 a=1;但是第一步被提前执行了,就是在执行上下文之前已经执行变量定义了,但是具体的初始化,必须根据上下文环境来决定,所以没有进行初始化。所以第二部分是证明变量的声明是靠前的,也就是提前的。
需要注意滴是:函数声明的优先级高于变量声明的优先级,但如果该变量value赋值了,也就是赋值滴变量的声明优先级大于函数