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

//报错:aisnotdefined
//但报错后没有停止执行,弹了12
如果换一下位置
//代码正常
请问两个script标签该如何去理解?为什么第一个script报错了,但程序还能继续向下走,执行第二个script标签。这和平时写JS代码出错时:报错-停止执行,两者处理机制不同?谢谢!
//报错:aisnotdefined
//但报错后没有停止执行,弹了12
慕斯709654
浏览 248回答 2
2回答

忽然笑

JavaScript解释器在执行脚本时,是按块来执行的。通俗地说,就是浏览器在解析HTML文档流时,如果遇到一个标签,则JavaScript解释器会等到这个代码块都加载完后,先对代码块进行预编译,然后再执行。执行完毕后,浏览器会继续解析下面的HTML文档流,同时JavaScript解释器也准备好处理下一个代码块。由于JavaScript是按块执行的,所以如果在一个JavaScript块中调用后面块中声明的变量或函数就会提示语法错误。第一端代码就是这情况。虽然说,JavaScript是按块执行的,但是不同块都属于同一个全局作用域,也就是说,块之间的变量和函数是可以共享的。这也是第二段代码为什么可以访问前一个块里的a的原因。

万千封印

来自网络资源:step1.读入第一个代码块。step2.做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。step3.对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。step4.执行代码段,有错则报错(比如变量未定义)。step5.如果还有下一个代码段,则读入下一个代码段,重复step2。step6.结束。javascript运行机制之执行顺序详解【朴灵评注】JavaScript运行机制详解:再谈EventLoop
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript