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

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

最后加載的JS文件里寫$(function() {});ready函數的意義何在?

最后加載的JS文件里寫$(function() {});ready函數的意義何在?

慕的地8271018 2018-10-17 14:13:34
如果在body的最后面在家一個script標簽。js內容是$(function() {});那么,當最后加載這個script標簽的時候是不是就沒必要寫$(function() {});了?因為我覺得,按照頁面加載順序,加載到body最后的時候不是本身就是dom加載完成的狀態了嗎?是不是就不需要在寫$(function() {});了?
查看完整描述

1 回答

?
嚕嚕噠

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

jQuery 的 ready 方法在現代瀏覽器中的實際是監聽 document 的 DOMContentLoaded 事件。此事件是在文檔的 DOM 結構加載完成后觸發,注意這里是文檔結構而不是整個頁面內容(引用資源不屬于文檔結構,如圖片)。

在 body 最后面直接執行與使用 ready 方式執行腳本在時間點上還是有一些差別的,ready 方式會等到 </html> 加載完后才會觸發。

如果 script 標簽后面就是 </body>了,那直接運行和調用 ready 方法(這里的 $(function() {}) 調用的其實是 ready() 方法)運行基本沒有差別。當然 jQuery 的 ready 方法還有隔離作用域的作用(但不是主要作用,隔離使用域可以使用 IIFE 的)。

如果 script 標簽后面還有別的內容比較能看清楚問題在哪里,如下代碼:

<!DOCTYPE html><html lang="en"><head>
  <meta charset="UTF-8">
  <title>Document</title></head><body>
  <script>
    $(function() {      console.log('ready');
    });
    
    (function () {      console.log('run');
    })();  </script>
  <script>
    console.log('last');  </script></body></html>

如果你能想清楚輸出順序,那就明白我說的意思了。

所以,雖然代碼放在了 body 所有內容之后,是不是還需要 ready() 方式書寫代碼要視情況而定,不能一概而論。


查看完整回答
反對 回復 2018-11-02
  • 1 回答
  • 0 關注
  • 554 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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