gpt4 book ai didi

javascript - jQuery 源代码中 "self.each(callback, array)"的用途是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:39 24 4
gpt4 key购买 nike

jQuery 的.each 函数只接受一个参数——一个函数。然而,在这段 jQuery 代码中,我们看到了以下内容:

if ( callback ) {
self.each( callback, [ responseText, status, jqXHR ] );
}

两个参数被传递给.each。我假设括号中的值是回调函数的参数,但我不清楚为什么这是可能的以及为什么有人会这样做而不是直接调用函数? :

if ( callback ) {
self.each( callback(responseText, status, jqXHR) );
}

最佳答案

"I'm not clear on why this is possible and why someone would do this..."

他们不会。仅供内部使用:https://github.com/jquery/jquery/blob/1.6.2/src/core.js#L248-253

// Execute a callback for every element in the matched set.
// (You can seed the arguments with an array of args, but this is
// only used internally.)
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},

此行为可能随时改变。


需要明确的是,通常你对 each 的回调有两个参数:

  • 集合的i (属性名或索引)作为第一个

  • i 项的值作为第二个

但有时在内部他们想使用 each 迭代器,但他们不需要这些参数,而是想用自己的参数代替。

这就是正在发生的事情。你can see here如果内部 args 属性已被赋予一个值,它们会通过传递给定的 args 对集合进行稍微不同的迭代。

他们是这样的:

callback.apply( object[ name ], args )

...而不是:

callback.call( object[ name ], name, object[ name ] )

...或者对于类似数组的集合来说略有不同但实际上是相同的。


你可以自己测试一下:

 // normal usage
$('p').each(function( a, b, c ) {

// will show the index, the element, and undefined for each "p" element
console.log( a, b, c );

});

// internal usage
$('p').each(function( a, b, c ) {

// will show 1, 2, 3 once for every "p" element
console.log( a, b, c );

}, [ 1, 2, 3 ] );

但同样,此行为不供公众使用,并且可能会在没有警告的情况下发生变化。

关于javascript - jQuery 源代码中 "self.each(callback, array)"的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com