一,预解析:寻找var function 形参
a=undefined
fn = function fn(){
alert();
}
二,逐行解读代码:
1.表达式
2.函数调用(作用域)
一 预解析:寻找var function 形参
二 逐行解读代码:
第二种情况 //当变量与函数名字相同时,丢变量,保函数
第三种情况 //多script标签时,从上到下依次解析并解读每一个作用域。
第四种情况//作用域链 : 执行表达式时,先在自己预解析中找,如果没有找到,会向它的父级作用域找,如果找不到,报错。
第五种情况//执行表达式时,找到了变量,则只影响作用域,并赋值undefined。
第六种情况//执行表达式时,找到了形参,同上。
第七种情况//执行表达式时,同时有实参和形参时,实参传递给形参变量。
第八种情况//执行表达式时,局部赋值变量,局部和全局没有声明变量,那么全局自动生成变量并且赋值。