为了账号安全,请及时绑定邮箱和手机立即绑定

return如何终止each迭代

return如何终止each迭代

当年话下 2019-03-19 17:19:31
问题:我自定义了一个each迭代函数,想比较两个数组是否一致。如果遍历过程中发现不一样,则退出循环。如何退出循环现在有些疑问。代码:/*    自己实现迭代器*/const each = function(arr,callback){    for(var i=0;i<arr.length;i++){        callback.call(arr[i],i,arr[i]);    }}/*     比较两数组是否一样  -----方式一*/const compare = function(arr1,arr2){    if(arr1.length !== arr2.length){        console.log("两数组长度不一致");        return;    }    each(arr1,function(index,item){        if(item !== arr2[index]){            console.log("两数组不一致");            return;        }    })}/*     比较两数组是否一样-----方式二*/const compare = function(arr1,arr2){    if(arr1.length !== arr2.length){        console.log("两数组长度不一致");        return;    }    var breaked = false;    each(arr1,function(index,item){        if(breaked){            return;        }        if(item !== arr2[index]){            console.log("两数组不一致");            breaked = true;        }    })}疑问:使用方式一,如果不相等,循环还会继续执行,不会终止。但是使用方式二可以终止循环。请问两方式的区别在哪里。
查看完整描述

5 回答

?
幕布斯1329279

TA贡献8条经验 获得超0个赞

问题的根源在你实现的each中,callback执行的结果在each中看没有任何意义,一直在for循环中。另外,你的两种方式实际上效果是一样的,不信你在


if(breaked){

    return;

}

加上console.log试试


查看完整回答
反对 回复 2019-03-29
?
幕布斯1329279

TA贡献8条经验 获得超0个赞

可以用 return new Error() ^_^||


查看完整回答
反对 回复 2019-03-29
?
幕布斯1329279

TA贡献8条经验 获得超0个赞

任何终止都只是终止当前函数,无法终止外部函数。


查看完整回答
反对 回复 2019-03-29
?
幕布斯1329279

TA贡献8条经验 获得超0个赞

方式一 each里面是回调函数。你在回调函数里return只是把回调函数return了。而不是你自己定义的那个函数


查看完整回答
反对 回复 2019-03-29
  • 5 回答
  • 0 关注
  • 665 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信