jquery中each 跳出为什么用return false

我看了js文件中的each方法,可是仍然想不明白,为什么不能用break,而用returnfalse... 我看了js文件中的each方法,可是仍然想不明白,为什么不能用break,而用returnfalse 展开
 我来答
lyz810
2015-07-03 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31776
前端开发工程师

向TA提问 私信TA
展开全部

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

阳阳89IT
2013-08-31 · TA获得超过374个赞
知道小有建树答主
回答量:602
采纳率:80%
帮助的人:141万
展开全部
return false 之下的代码就不执行了,跳出循环,而break 只有在switch中,条件语中,Each为循环语句
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式