这期内容当中小编将会给大家带来有关JavaScript预编译什么意思,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
JS运行三部曲
JS运行代码共分三步
- <李>
语法分析
李> <李>预编译
李> <李>解释执行
李> JavaScript代码在运行时,首先会进行语法分析,通篇检查代码是否存在低级错误,然后进行预编译,整理内部的一个逻辑,最后再开始一行一行的执行代码
语法分析
代码在执行之前,系统会通篇扫描一遍,检查代码有没有低级的语法错误,比如少写个大括号。
预编译
预编译前奏
预编译发生在函数执行的前一刻。变量未经声明就赋值,此变量为全局对象所有
<代码>=3 代码>
<代码> var b=c=4 代码>
一切声明的全局变量,全是窗户的属性
<代码> var=1===比;窗口。代码=1 >
预编译四部曲
- <李>
创建AO(激活对象)对象(里面存储的是函数内部的局部变量)
李> <李>找形参和变量声明,将变量和形参名做为AO属性名,值为未定义的
李> <李>将实参和形参统一
李> <李>在函数体里面找函数声明,值赋予函数体
李>用一个例子来说明一下,也可以自己先给出一个答案,再继续往下看
function fn (a), { ,console.log(一个); ,var a =, 123; ,console.log(一个); ,function (), {} ,console.log(一个); ,var b =,()函数,{}; ,console.log (b); ,function d (), {} ,console.log (d) } fn (1),
第一步,创建AO(激活对象)对象{}第二步,找形参和变量声明,将变量和形参名做为AO属性名,值为未定义
{ ,答:没有定义, b:大敌;定义, }
第三步,将实参和形参统一
{ ,答:1, b:大敌;定义, }
第四步,找函数声明,值赋予函数体
{ 答:大敌;function (), {}, b:大敌;定义, d:大敌;function d (), {} }
所以在函数fn执行的前一刻,a, b, d的值如上所示
所以fn(1)执行的结果为
//?(){}
引用>
//123
123
////?(){}
//?d () {}在全局作用域里,预编译过程有些许不同
<李>
创建去(全局对象)对象(里面存储的是函数内部的全局变量)===窗口
李> <李>找形参和变量声明,将变量和形参名做为走属性名,值为未定义的
李> <李>在函数体里面找函数声明,值赋予函数体
李>解释执行
一行一行的执行代码
实践题
这里有几个例题,有兴趣的可以看一下
function 测试(a, b), { ,console.log(一个); ,console.log (b); ,var b =, 234; ,console.log (b);=,a 123; ,console.log(一个); ,function (), {} ,var ;=,b 234; ,var b =,()函数,{}; ,console.log(一个); ,console.log (b); } 测试(1);global =, 100; function fn (), { ,console.log(全球);=,global 200; ,console.log(全球); ,var global =, 300; } fn (); var 全球;function 测试(),{ ,console.log (b); ,if (一),{ var 才能;b =, 100; ,}=,c 234; ,console.log (c); } var ; 测试(); 时间=a 10; console.log (c);上述就是小编为大家分享的JavaScript预编译什么意思了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
JavaScript预编译什么意思