jQuery $ .each(arr,foo)与$(arr).each(foo)

时间:2010-06-08 12:41:05

标签: javascript jquery syntax

在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]

有没有区别,还是纯语法?

2 个答案:

答案 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(数组,回调);

但无论哪种方式,这个过程几乎都是一样的。只要参数类型检查有助于用户失去如何处理这种情况。

即使这不是实际处理的方式,也有一些使用这种技术来创建松散的函数