这更像是一个方便的问题而不是性能问题(尽管document.head
应该有微不足道的好处)。使用您喜欢的任何一个,或者将一个用作另一个的后备(如您的示例代码所做的那样)。有后备是明智的,因为document.head
在 IE 6-8 中不支持。
它不太可能getElementsByTagName
很快被弃用,所以这不是一个很好的例子来说明何时提供后备是好的。您可以安全地自行使用更详细的路由,并在未来享受支持。
与旧浏览器相比,这些类型的事情的更好例子是事件,以及它们如何在现代浏览器中传递。看到这样的事情并不少见:
function callback (event) {
var id = (event || window.event).target.id;
}
但是,在这种情况下,该window.event
部分对于遗留支持是必需的。如果event
对象是undefined
,我们假设事件是window
对象的成员。随着浏览器的成熟,window.event
不再是一件事,而这些测试一致地返回event.target.id
。
同样,您的情况有点不同,因为getElementsByTagName
可能永远不会像window.event
以前那样被弃用或消失。