簡體   English   中英

為什么.html()在用於同一目的時比.text()快得多?

[英]Why is .html() so much faster than .text() when used for the same purpose?

我正在玩jQuery的.text().html()方法並運行一些簡單的jsPerf測試 ,當我驚訝地發現.html()在檢索文本方面要快得多:

  • $div.text() - 88,496 ops / sec
  • $div.html() - 592,028 ops / sec

當結果相同時,為什么.text().html()慢得多? .text()執行什么操作.html()跳過來解釋這種差異?

我知道每種方法都有不同的目的; 我很好奇他們用於同一目的的情況。

它與所需的解析量有關。 .text()較慢,因為它必須解析內部HTML並去除任何內部標記。 .html()只是抓住(或者,如果你正在設置內容,刪除)那里的任何東西都已完成。

您可以在此處查看.text()的源 (第123-144行)和.html()的源 (第404-441行)。 當簡單地獲取(不設置)值時, .text()具有遞歸,但.html()執行簡單的return elem.innerHTML; 因此要快得多。 即使將它用作setter, .html()也更簡單。

另請注意:即使您同時使用兩者作為設置器並僅傳遞純文本, .html()也會更快; 當你使用.text()時,瀏覽器仍然需要確定elem.nodeType 這實際上需要解析字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM