[JavaScript]for循环里的return可以终止遍历,forEach里的return不能终止遍历
更细节的内容可以在MDN中学习: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
for循环里的return可以终止遍历,forEach里的return不能终止遍历
在个人实践中多次遇到这个问题,今天是在验证日麻手牌每种牌不多于4个的时候遇到的。
解决方法1:使用基本的for( ; ; )循环
var count = [0, 0, 0, 0, 14, 0, 0, 0, 0] for (var i = 0; i < count.length; i++) { console.log('count item: ', count[i]) if (count[i] > 4) { // array.foreach里面不能用return,这个地方可以用for循环 return { carddict: carddict, num: 0, err: '牌数量错误!单种牌不得多于4张!' } } }
解决方法2:先声名一个变量,在遍历到有问题的地方给这个变量赋值,遍历之后返回这个变量
var msg = null // 验证杠牌是4张 if (gangcards.num > 0) { for (i in gangcards.carddict) { console.log(gangcards.carddict[i]) gangcards.carddict[i].forEach(function (item) { // console.log('check gangcards item ------> ', handcards_count[i][item-1]) if(handcards_count[i][item - 1] !=4){ console.log('杠牌输入不合法:' + item + i) // array.foreach里面不能用return,这个地方用变量取出来 msg = '杠牌输入不合法:' + item + i } }) } } return msg
做一记录,如标题。
*-*-*-*-*-*-*-*-*-*-*-*
扩展:
1. 函数 return 只能返回一个值,如果逗号隔开多个值,则返回最后一个值。
var fn3 = function(){ return 1, 2, 3 } console.log('fn3 return: ', fn3()) // fn3 return: 3
2. 函数没有写 return,则返回 undefined。
3. break, continue, return 的区别
break | 结束当前的循环体(for, while等) |
continue | 跳出当前循环,继续执行下次循环(for, while等) |
return |
不仅可以退出循环,还能够返回return语句中的值, |