JS中script词法分析

核心:JS中的script是分段执行的。

1 <script>
2     var i = 10;
3 </script>
4 <script>
5     alert(i);
6 </script>

上面的例子中,弹出结果10。因为在之前script语句段定义的变量和函数可以再其他script语句段中使用。在一个js程序中,可以有多个script语句段,那么它们如何工作呢?

script执行过程:

  1.读入第一个代码段

  2.编译(声明变量,声明函数,语法检查,语义检查,代码优化,分析并得到代码书)

  3.执行

  4.读入下一代码段

  5.编译

  6.执行

  7.读入下一代码段

  ......

  n.结束

举个例子来说

1 <script>
2     //例1    
3     alert(i);
4 </script>
1 <script>
2     //例2    
3     alert(i);
4     var i=10;
5 </script>

例1的代码执行后,什么都不会弹出,因为已经报错了。但例2的代码会弹出undefined。因为i已经声明但没有赋值。因为代码段是先编译再执行,编译负责生成,执行负责赋值。

区分编译错误和运行错误:

1 <script>
2     alert(i; //编译错误
3     alert(i);//运行错误
4     alert('hello');
5 </script>

但无论是哪种错误,当前代码段中的后面的代码都不执行。

无论是哪种错误,不会影响后面的代码段的执行。

编译错误时,当前代码段会停止,代码中所有声明全部无效。

运行错误时,前面的代码已经执行完毕,不会影响该代码段内前面的内容。

 

转载于:https://www.cnblogs.com/platycoden/p/5199695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值