究竟什么是“打电话”/“申请”在这做什么?

时间:2016-02-21 12:25:33

标签: javascript jquery

     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 ) === falsecallback.call( object[ name ], name, object[ name ] ) === false

我的意思是这些构造试图检查的所有条件是什么?

1 个答案:

答案 0 :(得分:1)

callback.apply( object[ name ], args )只是调用函数callbackobject[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;
}