JavaScript解析与执行过程
本节课所讲内容:
- JavaScript 全局变量的执行
- JavaScript 函数的执行
主讲教师:Head老师
一. JavaScript全局变量的执行
全局预处理阶段执行会首先创建Lexical Environment词法对象,用声明方式创建的函数和用var定义的变量会放在Lexical Environment对象中。
Lexical Environment{
a:undefined
xxx:对函数的引用
}
var a =5;
function xxx(){} //声明方式创建的函数
var b = function(){} //函数表达式
PS:顶级Lexical Environment对象就是window对象
Javascript执行阶段 先扫描函数声明后扫描变量(var声明) 处理函数声明有冲突,会覆盖,处理声明变量有冲突会忽略。
Alert(a);
Function a(){
Console.log(5);
}
Var a = 5;
二. JavaScript 函数的执行
函数的执行每调用一次,产生一个LexicalEnvironment
Lexical Environment{
a:1
b:2
如果参数没有全部传递则:
a:1
b:undefined
可以使用arguments获取实际传递的参数
}
function f(a,b){
alert(a); //a会成为函数的引用
alert(b); //b是2
var b = 100;
function a(){
}
}
f(1,2) ;
ps:处理函数声明有冲突,会覆盖,处理声明变量有冲突会忽略。
PS:给预处理的阶段成员赋值,如果变量没有声明var,会成为最外部LexicalEnvironment的成员