在`forEach`函数里面`return`关键字是什么意思?

时间:2016-01-07 11:08:08

标签: javascript arrays

 str0 = re.sub(r'(\\"title\\" : \\".+?);(.+?\\")',r"\1\2", str0) 
$('button').click(function () {
   [1, 2, 3, 4, 5].forEach(function (n) {
      if (n == 3) {
         // it should break out here and doesn't alert anything after
         return false
      }
      alert(n)      
   })
})

我的问题:虽然我致电<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>Click me</button>,为什么它仍会提醒下一个号码?就像:忽略下面的代码并继续下一个元素

2 个答案:

答案 0 :(得分:112)

来自Mozilla Developer Network

  

除了抛出异常之外,无法停止或中断forEach()循环。如果您需要此类行为,forEach()方法是错误的工具。

     

提前终止可以通过以下方式完成:

           

其他数组方法:every()some()find()findIndex()使用谓词返回truthy值来测试数组元素,以确定是否需要进一步迭代

答案 1 :(得分:20)

return退出当前功能,但迭代会继续,因此您会获得跳过if的“下一个”项目并提醒4 ...

如果你需要停止循环,你应该只使用一个普通的for循环:

$('button').click(function () {
   var arr = [1, 2, 3, 4, 5];
   for(var i = 0; i < arr.length; i++) {
     var n = arr[i]; 
     if (n == 3) {
         break;
      }
      alert(n);
   })
})

你可以阅读更多关于js break&amp; amp;继续:http://www.w3schools.com/js/js_break.asp