函数预处理阶段步骤:
每调用一次,产生一个LexicalEnvironment
先函数的参数
内部声明式函数
内部var变量
冲突情况与全局处理一样
function fuc(a,b){
console.log(a);//Output ƒ a(){console.log("aaa");}
console.log(b);//2
function a(){
console.log("aaa");
}
var b=3;
}
fuc(1,2);
函数执行阶段步骤:
给预处理阶段的成员赋值
如果没有用var声明的变量,会成为最外部LexicalEnvironment的成员(设置全局变量)
function a(){
b="Hello World B";//在执行时b为全局变量
var c="Hello World C";//c为局部变量
}
a();
console.log(b);//Output Hello World B
console.log(c);//报错!!! c is not defined