recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - JS问题:一个页面有两个script标签,这如何理解?

<script>alert(a)</script> // 报错:a is not defined
<script>var a=12;alert(a)</script>//但报错后没有停止执行,弹了12

如果换一下位置

<script>var a=12;alert(a)</script>
<script>alert(a)</script> //代码正常

请问两个script标签该如何去理解?为什么第一个script报错了,但程序还能继续向下走,执行第二个script标签。这和平时写JS代码出错时:报错-停止执行,两者处理机制不同?谢谢!

<script>alert(a)</script> // 报错:a is not defined
<script>var a=12;alert(a)</script>//但报错后没有停止执行,弹了12
伊谢尔伦伊谢尔伦2895 Il y a quelques jours714

répondre à tous(12)je répondrai

  • 黄舟

    黄舟2017-04-10 15:33:40

    很简单,你可以理解为php的notice错误和ERROR错误,错误级别不同,效果也不同,如果你是语法错误之类的致命错误,js会停止后续执行。

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 15:33:40

    <script>alert(a)</script> // 报错:a is not defined
    <script>var a=12;alert(a)</script>//但报错后没有停止执行,弹了12
    

    等价于以下代码块
    ====>

    <script>
        alert(a);
        var a=12;
        alert(a);
    </script> 
    

    因为变量提升的关系
    等价于

    <script>
        var a;
        alert(a);//a is not defined,没有出错,存在变量a,只是变量值没有定义
        a=12;//a 赋值
        alert(a);//a=12
    </script> 
    

    效果和以下代码不同

    <script>
        alert(b);//b未定义 Uncaught ReferenceError: b is not defined 引用错误
        //以下代码不会被执行
        var a=12;
        alert(a);
    </script> 
    

    répondre
    0
  • Annulerrépondre