querySelector()和querySelectorAll()[0]之间的区别

时间:2017-10-21 21:40:29

标签: javascript selectors-api

我使用以下内容查看了一些JS代码,以选择多个节点中的第一个。

querySelectorAll()[0]

以下是不是做同样的事情?

querySelector()

使用querySelectorAll()[0]是否有优势?

2 个答案:

答案 0 :(得分:2)

两个表达式都将返回完全相同的结果。

唯一的区别是querySelectorAll()[0]将首先找到与选择器匹配的所有项目,然后索引第一个项目。而querySelector()将"短路"一旦找到第一个元素。

因此,从理论上讲,querySelector()可能比querySelectorAll()[0]略微提高效率。但是,他们的行为是一样的。

答案 1 :(得分:1)

它们都会产生相同的结果,但它们采用不同的路线(字面和比喻)来实现目标。在您的示例中,.querySelector()是正确的方法,因为当.querySelectorAll()只需要使用第一个匹配时,通过扫描调用该方法的整个元素会导致更多的性能损失。

.querySelectorAll()的优点是你可以缓存对整个匹配元素集的引用,然后将它们编入索引或稍后根据需要循环它们。因此,如果需要第一个匹配的元素,但代码中的其他地方需要整个集合,那么.querySelectorAll(<<selector>>)[0]将是有意义的。

相关问题