jQuery:array zero vs函数get zero:[0]vs get(0)

jQuery:array zero vs函数get zero:[0]vs get(0),jquery,Jquery,有什么理由我应该使用$('#x>div')。当我可以使用$('#x>div')[1]时,获取(1)?有区别吗?没有,没有区别。jQuery保存数组中的所有DOM节点 获取(1)==$()[1] --jQuery源代码段-- get:function(num){ returnnum==null? //返回一个“干净”数组 这个。toArray() //只返回对象 (num

有什么理由我应该使用
$('#x>div')。当我可以使用
$('#x>div')[1]
时,获取(1)
?有区别吗?没有,没有区别。jQuery保存数组中的所有DOM节点

获取(1)==
$()[1]

--jQuery源代码段--

get:function(num){
returnnum==null?
//返回一个“干净”数组
这个。toArray()
//只返回对象
(num<0?this[this.length+num]:this[num]);
},
如您所见,不带参数的
.get()
将以数组形式返回所有节点。这不能用括号来完成。

否,性能是因为jQuery对象的创建控制了数组/函数的访问时间:

Browser      get Ops/sec  array Ops/sec  #tests
Chrome 9     20,555       22,671         2

这是一个完全相同的副本,但我没有链接。这就是为什么我拼写了这些单词。因此,以后通过搜索更容易找到。只要再拼几个字,以防万一@嗯。。我希望数组方法更有效,因为您不必遍历函数。哎呀,哦,它是。。抱歉,我是以毫秒为单位来考虑的,而不是每秒的操作。在测试中,您也在执行一个相对繁重的操作(创建jQuery对象和DOM选择),这一事实模糊了您的比较。如果从测试中删除这些内容,则会显示出巨大的差异
array:123366553/get:4062520
所以@George的期望是绝对正确的。OP正在创建一个jQuery对象,它控制着性能,所以您需要考虑它。将其从测试中删除是不现实的。更新:在Chrome 47中,差异显著减小:
数组:397779318/get:343623455
(这是我的本地结果-无法加载其他结果)
Browser      get Ops/sec  array Ops/sec  #tests
Chrome 9     20,555       22,671         2