javascript - JS问题:一个页面有两个script标签,这如何理解?
伊谢尔伦
伊谢尔伦 2017-04-10 15:31:40
0
12
719
<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
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

reply all(12)
黄舟

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

Ty80
<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> 
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template