jquery中each 跳出为什么用return false

我看了js文件中的each方法,可是仍然想不明白,为什么不能用break,而用returnfalse

由于jQuery的each是通过循环调用回调函数的方式实现的,所以在函数内写的break只适用于函数内部的逻辑,并不能对函数外层的循环起到作用,所以break不管用。具体可以分析一下jQuery的源码,下面以jQuery2.1.4中的each方法举例:

each: function( obj, callback, args ) {
 var value,
  i = 0,
  length = obj.length,
  isArray = isArraylike( obj );//如果obj是一个类似数组的结构(可用for遍历的),则为true

 if ( args ) {
  if ( isArray ) {
  for ( ; i < length; i++ ) {
   value = callback.apply( obj[ i ], args );//循环调用

   if ( value === false ) {//如果返回值全等于(包括类型和值)false,就退出循环
   break;
   }
  }
  } else {
  for ( i in obj ) {//这种是对象的,需要用for in遍历
   value = callback.apply( obj[ i ], args );

   if ( value === false ) {
   break;
   }
  }
  }
 // A special, fast, case for the most common use of each
 } else {
  if ( isArray ) {
  for ( ; i < length; i++ ) {
   value = callback.call( obj[ i ], i, obj[ i ] );

   if ( value === false ) {
   break;
   }
  }
  } else {
  for ( i in obj ) {
   value = callback.call( obj[ i ], i, obj[ i ] );

   if ( value === false ) {
   break;
   }
  }
  }
 }
 return obj;
 }

由源码可以看出,只有回调函数返回的值为false时,才会退出循环

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-31
return false 之下的代码就不执行了,跳出循环,而break 只有在switch中,条件语中,Each为循环语句本回答被提问者采纳
相似回答