首页 > 编程语言 > 详细

JavaScript解析机制

时间:2014-10-16 00:12:12      阅读:368      评论:0      收藏:0      [点我收藏+]

JavaScript是一种解释型语言,按照<script>块儿来预编译和执行。

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

示例1:

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

 1 alert(variableA); //undefined
 2 var variableA = 2;
 3 alert(variableA); //2
 4 
 5 
 6 alert(funcA); //function funcA(){alert(‘I am funcA.‘)}
 7 funcA(); //I am funcA.
 8 function funcA(){
 9     alert(‘I am funcA.‘);
10 }

示例2:

预编译预条件无关!

 1 alert(variableA); //undefined
 2 alert(funcA); //function funcA(){alert(‘I am funcA.‘)}
 3 funcA(); //I am funcA
 4 
 5 if(true){
 6     var variableA = 2;
 7     
 8 }else{
 9     function funcA(){
10         alert(‘I am funcA.‘);
11     }
12 }
13 alert(variableA); //2

示例3:

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

1 <script>
2     funcA(); //I am funcA too.
3     function funcA(){
4         alert(I am funcA.);
5     }
6     function funcA(){
7         alert(I am funcA too.);
8     }
9 </script>
 1 <script>
 2     funcA(); //I am funcA.
 3     function funcA() {
 4         alert(I am funcA.);
 5     }
 6 </script>
 7 <script>
 8     funcA(); //I am funcA too.
 9     function funcA() {
10         alert(I am funcA too.);
11     }
12 </script>

示例4:

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

1 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}
2 var variableA = 2;
3 function variableA(){
4     alert(‘I am variableA.‘);
5 }
6 alert(variableA); //2
1 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}
2 function variableA(){
3     alert(‘I am variableA.‘);
4 }
5 var variableA = 2;
6 
7 alert(variableA); //2

示例5:

1 alert(variableA); //undefined
2 var variableA = function(){
3     alert(‘I am variableA.‘);
4 }
5 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}
1 alert(variableA); //undefined
2 var variableA = function variableA(){
3     alert(‘I am variableA.‘);
4 }
5 
6 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}

 

JavaScript解析机制

原文:http://www.cnblogs.com/zhouwenhong/p/4027687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!