首页 > 代码库 > JavaScript解析机制
JavaScript解析机制
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); //undefined2 var variableA = function(){3 alert(‘I am variableA.‘);4 }5 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}
1 alert(variableA); //undefined2 var variableA = function variableA(){3 alert(‘I am variableA.‘);4 }5 6 alert(variableA); //function variableA(){alert(‘I am variableA.‘)}
JavaScript解析机制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。