<p>代码执行:</p>
1)预解析
变量的作用域提升:
JS执行之前遇到 var function 参数 就会把这些东西提升到代码的最开始位置
变量放到预解析仓库的时候,JS会主动给变量附一个值:undefined
函数放到预解析仓库的时候,是一个完整的函数块
如果函数和变量重名了,那么剔除变量,留下函数
2)逐行解读
表达式: + = ++ -- % 参数...
一组代码的集合,返回一个值。
a,有副作用的表达式:var a = 1
b,纯计算的表达式: 3+4
特征:可以求出来一个值
表达式可以修改预解析的值!!!
alert(a); //function a(){alert(2)}
var a = 1;
alert(a); //1
function a(){
alert(2);
}
alert(a); //1
var a = 3;
alert(a); //3
function a(){
alert(4);
}
alert(a); //3
var a = 1;
function fn1(){
alert(a); //undefined
var a = 2;
}
fn1();
alert(a); //1
var a = 1;
function fn1(a){
alert(a); //undefined
a = 2;
}
fn1();
alert(a); //1
var a = 1;
function fn1(a){
alert(a); //1
a = 2;
}
fn1(a);
alert(a); //1