zoukankan      html  css  js  c++  java
  • 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>

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

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

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

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

  • 相关阅读:
    selenium+python(模块化驱动测试)
    selenium+Python(处理html5的视频播放)
    selenium+Python(文件下载)
    selenium+Python(文件上传)
    selenium+Python(alert 、confirm 、prompt 的处理)
    selenium+Python(表单、多窗口切换)
    Cookie跳转登录验证码
    几种典型的软件自动化测试框架
    Python开发利器之UliPad
    selenium+python(数据驱动测试)
  • 原文地址:https://www.cnblogs.com/platycoden/p/5199695.html
Copyright © 2011-2022 走看看