繁体   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