document.head诉document.getElementsByTagName("head")[0]

Bri*_*hon 15 javascript dom

使用document.head和使用有document.getElementsByTagName("head")[0]什么区别?我跑的测试表明它们都需要大约一毫秒.

我也见过

document.head||document.getElementsByTagName("head")[0];
Run Code Online (Sandbox Code Playgroud)

这会让我相信它document.head更快,而另一个更兼容,除了我做的测试反驳了这一点.

如果一个更兼容,为什么还要使用另一个?

更新:正如一些人所指出的,我的测试是错误的.

Tra*_*s J 12

使用||像这样的运算符是一种特征检测形式.使用时,如果第一个值未定义,则返回后一个值.

因此对于

document.head || document.getElementsByTagName("head")[0];
Run Code Online (Sandbox Code Playgroud)

原因是如果document.head不支持,则至少返回正确的值.

至于你的速度测试,毫秒很长一段时间.我怀疑这真的花了很长时间.事实上,我为此做了一个jsPerf.它表明该getElementsByTagName功能大约慢了80%.

  • 同意他们不会花费相同的时间,`getElementsByTagName`随着DOM大小的增加而变慢.并且"1ms"是一个很难测量的标志 (2认同)

Ale*_*ard 5

MDN称document.head仅在IE 9中获得了支持,因此使用其他方法作为后备保护可避免浏览器不兼容