在jQuery中,jQuery.each
的以下两种结构之间有什么区别:
// Given
var arr = [1,2,3,4],
results = [],
foo = function (index, element) {
/* something done to/with each element */
results.push(element * element); // arbitrary thing.
}
// construction #1
$.each(arr, foo); // results = [1,4,9,16]
// construction #2
$(arr).each(foo); // results = [1,4,9,16]
有没有区别,还是纯语法?
答案 0 :(得分:8)
$().each()
只是$.each()
,you can see this in the core code的包装:
each: function( callback, args ) {
return jQuery.each( this, callback, args );
}
虽然$(something).each()
是用于元素的,但我不能保证你使用它与普通数组不会破坏(它不太可能会破坏,因为jQuery对象虽然是包装数组)。在这种情况下,预期用途是直接调用$.each()
。
答案 1 :(得分:1)
Theres与处理数组的方式没有区别,但纯粹是语法。
jQuery是一个非常松散的库,并且允许您以不同的方式利用每个函数来为您提供服务。
jQuery像这样处理这个
function each(first,second)
{
array = (instanceOf this == Array) ? this : ((first instanceOf Array) ? first : second);
callback = (instanceOf second == Function) ? second : first;
//As you can see its testing what types are being sent to the fintion
}
如果first
参数是一个函数,那么this
必须是数组IE $([1,2,3,4]).each(callback)
,否则它预期first
是数组而second
是回调IE` $ .each(数组,回调);
但无论哪种方式,这个过程几乎都是一样的。只要参数类型检查有助于用户失去如何处理这种情况。
即使这不是实际处理的方式,也有一些使用这种技术来创建松散的函数