Maison > Questions et réponses > le corps du texte
<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
黄舟2017-04-10 15:33:40
很简单,你可以理解为php的notice错误和ERROR错误,错误级别不同,效果也不同,如果你是语法错误之类的致命错误,js会停止后续执行。
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>