代码改变世界

js解析器解析一段js代码的过程

2016-04-06 11:55  沧海哥哥  阅读(320)  评论(0编辑  收藏  举报

第一阶段

js预解析

  “找一些东西”:var, function ,参数

  a=... ;所有的变量,在正式运行代码之前,都会提前赋一个值:未定义

  fn1=function fn1(){...};所有函数,在运行之前都是整个函数快

  遇到重名:只留一个

  如果变量和函数重名,只留变量

  遇到两个函数重名,留下后者

第二阶段

逐行解读代码:

  表达式:含有这些运算符的能改变变量的值( =、 +、 - 、*、 / 、% 、++、 -- 、!、 参数、....)

 

案例:


<script type="text/javascript">
alert(a); //function a(){alert(4);}
var a=1;
alert(a); //1
function a(){alert(2);};
alert(a); //1
var a=3;
alert(a); //3
function a(){alert(4);};
alert(a); //3
a(); //Uncaught TypeError: a is not a function

</script>