jquery each 和for怎么跳出循环终止本次循环

JavaScript010

jquery each 和for怎么跳出循环终止本次循环,第1张

1、for循环中我们使用continue;终止本次循环计入下一个循环,使用break终止整个循环。

2、而在jquery中 $.each则对应的使用return true 和return false。

break可以跳出switch...case语句,继续执行switch语句后面的内容。break语句还可以跳出循环,也就是结束循环语句的执行。

continue语句的作用为结束本次循环,接着进行下一次是否执行循环的判断。

continue与break的区别是:break是彻底结束循环,而continue是结束本次循环

由于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时,才会退出循环