您的位置:首页 > Web前端 > JavaScript

JavaScript解析机制

2014-10-15 23:13 465 查看
JavaScript是一种解释型语言,按照<script>块儿来预编译和执行。

JavaScript解释器在预编译阶段,先预声明变量,再预声明函数。在执行阶段,进行变量赋值,和函数执行。

示例1:

预编译阶段,对于变量只进行预声明,并初始化值为undefined,在执行阶段才真正进行赋值。

alert(variableA); //undefined
var variableA = 2;
alert(variableA); //2

alert(funcA); //function funcA(){alert('I am funcA.')}
funcA(); //I am funcA.
function funcA(){
alert('I am funcA.');
}


示例2:

预编译预条件无关!

alert(variableA); //undefined
alert(funcA); //function funcA(){alert('I am funcA.')}
funcA(); //I am funcA

if(true){
var variableA = 2;

}else{
function funcA(){
alert('I am funcA.');
}
}
alert(variableA); //2


示例3:

JavaScript按照<script>代码块来预编译!

<script>
funcA(); //I am funcA too.
function funcA(){
alert('I am funcA.');
}
function funcA(){
alert('I am funcA too.');
}
</script>


<script>
funcA(); //I am funcA.
function funcA() {
alert('I am funcA.');
}
</script>
<script>
funcA(); //I am funcA too.
function funcA() {
alert('I am funcA too.');
}
</script>


示例4:

先预声明变量,再预声明函数,因此,预编译阶段variableA函数覆盖了variableA变量。在执行阶段,variableA变量被赋值为2,

alert(variableA); //function variableA(){alert('I am variableA.')}
var variableA = 2;
function variableA(){
alert('I am variableA.');
}
alert(variableA); //2


alert(variableA); //function variableA(){alert('I am variableA.')}
function variableA(){
alert('I am variableA.');
}
var variableA = 2;

alert(variableA); //2


示例5:

alert(variableA); //undefined
var variableA = function(){
alert('I am variableA.');
}
alert(variableA); //function variableA(){alert('I am variableA.')}


alert(variableA); //undefined
var variableA = function variableA(){
alert('I am variableA.');
}

alert(variableA); //function variableA(){alert('I am variableA.')}


示例6:

函数默认返回值为undefined

var variableA = funcA(2);
function funcA(num){
num = num + 1;
}

alert(variableA); //undefined
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: