猿问

一个网页中有多个<script>标签时的问题?

一个网页文件中有多个<script>标签时,每个<script>代码执行后的结果依然保存到内存中么?还是会立即释放并关闭开始执行下一个<script>中的代码?


慕容森
浏览 1432回答 2
2回答

幕布斯7119047

举个例子就知道了。<script>&nbsp; var a = 1</script><script>&nbsp; console.log(a) // 1</script>这说明<script>标签中的代码执行后并没有释放关闭。我又试了试:<script>&nbsp; console.log(a) // 报错 Uncaught ReferenceError: a is not defined</script><script>&nbsp; var a = 1</script>这说明两个<script>标签中的代码并不存在变量提升,这是为什么呢?我又试了试这个:<script>&nbsp; console.log(a) // Uncaught ReferenceError: a is not defined&nbsp; var b = 1&nbsp; console.log(b)</script><script>&nbsp; var a = 1&nbsp; console.log(a); // 1</script>后面标签中的代码会执行,打印 1.我个人的理解:这和浏览器中 UI 线程、JS 解析线程有关<script>标签是浏览器中的 UI 线程负责解析的,并且一个<script>标签就是一个代码块儿,而<script>中的代码是 JS 解析线程负责解析的这两个<script>中的代码他们拥有同一个全局作用域,但是因为它们是分开渲染与解析的:所以:也就是说,每个<script>标签先由 UI 线程渲染,再由 JS 线程解析,JS 代码分次被解析,但是他们拥有同一个全局作用域。

噜噜哒

个人可以理解把每个script标签里的代码嵌在对应的位置,执行结果是否保存在内存中,取决于结果的作用域和结果是否被引用
随时随地看视频慕课网APP
我要回答