each: function( object, callback, args ) {
...
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
...
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
return object;
}
你可以忽略代码..它的jQuery实现jQuery的实现
我想知道这条线做了什么
callback.apply( object[ name ], args ) === false
或callback.call( object[ name ], name, object[ name ] ) === false
我的意思是这些构造试图检查的所有条件是什么?
答案 0 :(得分:1)
callback.apply( object[ name ], args )
只是调用函数callback
,object[name]
作为上下文(this
)和args
作为参数。 jQuery通过返回false
提供了一种断开循环的方法,如the docs中所述:
我们可以通过使回调函数返回
$.each()
来打破特定迭代的false
循环。返回非false与for循环中的continue
语句相同;它将立即跳到下一次迭代。
所以,这段代码:
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
检查函数是否返回false
,如果是,则打破循环。
如果我们跳过上下文部分,代码可能如下所示(在ES6中):
if (callback(...args) === false) {
break;
}