读完此篇文章将占用您7分钟
JavaScript(下列简称JS)的预解析主要有函数参数,函数声明,var变量的声明。JS中语句执行步骤为:
1.自身函数参数
2.函数声明
3.var变量
4.其他语句的执行。
接下来,我们将具体看看代码的体现:
function a(){
console.log(a); // function
function a(){};
var a = 10;
console.log(a); //10
}
a();
具体执行过程为:
**1.执行函数参数-->无函数参数
2.执行函数声明--> function a(){}
3.执行var 声明 --> var a;与函数声明重名, 被忽略
4.执行其他语句:
console.log(a) -->function,
a = 10;
console.log(a) --> 10;**
2.
function b(){
console.log(a); // function
var a = 10;
function a(){};
console.log(a); // 10
}
b();
具体执行过程:
***1.执行函数参数-->无函数参数
2.执行函数声明--> function a(){}
3.执行var 声明 --> var a;与函数声明重名, 被忽略
4.执行其他语句:
console.log(a) -->function
a = 10;
console.log(a) --> 10;***
3.
function d(){
var a = 10;
console.log(a); // 10
function a(){};
console.log(a); // 10
}
d();
具体执行过程:
***1.执行函数参数-->无函数参数
2.执行函数声明--> function a(){}
3.执行var 声明 --> var a;与函数声明重名, 被忽略
4.执行其他语句:
a = 10;
console.log(a) --> 10;
console.log(a) --> 10;***
4.
(function(num){
console.log(num); //100
var num;
console.log(num); //100
})(100);
具体执行过程:
1.执行函数参数-->num = 100;
2.执行函数声明--> 无
3.执行var 声明 --> 与第一步重名, 被忽略
4.执行其他语句。
console.log(a) -->100,
console.log(a) --> 100;
5.
(function(num){
console.log(num); // function
var num;
console.log(num); // function
function num(){};
})();
具体执行过程:
1.执行函数参数-->num = undefined;
2.执行函数声明--> function num(){} 覆盖了第一步
3.执行var 声明 --> 与第二步重名, 被忽略
4.执行其他语句。
console.log(a) -->function,
console.log(a) --> function;
大家在具体事例中可以通过上述的四步,进行对预解析的判断和理解,
***希望对你有帮助。***