亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個網頁中有多個<script>標簽時的問題?

一個網頁中有多個<script>標簽時的問題?

慕容森 2019-04-20 14:19:46
一個網頁文件中有多個<script>標簽時,每個<script>代碼執行后的結果依然保存到內存中么?還是會立即釋放并關閉開始執行下一個<script>中的代碼?
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊


舉個例子就知道了。


<script>

  var a = 1

</script>

<script>

  console.log(a) // 1

</script>

這說明<script>標簽中的代碼執行后并沒有釋放關閉。

我又試了試:


<script>

  console.log(a) // 報錯 Uncaught ReferenceError: a is not defined

</script>

<script>

  var a = 1

</script>

這說明兩個<script>標簽中的代碼并不存在變量提升,這是為什么呢?


我又試了試這個:


<script>

  console.log(a) // Uncaught ReferenceError: a is not defined

  var b = 1

  console.log(b)

</script>

<script>

  var a = 1

  console.log(a); // 1

</script>

后面標簽中的代碼會執行,打印 1.


我個人的理解:

  1. 這和瀏覽器中 UI 線程、JS 解析線程有關

  2. <script>標簽是瀏覽器中的 UI 線程負責解析的,并且一個<script>標簽就是一個代碼塊兒,而<script>中的代碼是 JS 解析線程負責解析的

  3. 這兩個<script>中的代碼他們擁有同一個全局作用域,但是因為它們是分開渲染與解析的:

所以:也就是說,每個<script>標簽先由 UI 線程渲染,再由 JS 線程解析,JS 代碼分次被解析,但是他們擁有同一個全局作用域。


查看完整回答
反對 回復 2019-05-19
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

個人可以理解把每個script標簽里的代碼嵌在對應的位置,執行結果是否保存在內存中,取決于結果的作用域和結果是否被引用


查看完整回答
反對 回復 2019-05-19
  • 2 回答
  • 0 關注
  • 1506 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號