forEach 遍历的范围在第一次调用 callback 前就会确定. 调用 forEach 后添加到数组中的项不会被 callback 访问到. 如果已经存在的值被改变, 则传递给 callback 的值是 forEach 遍历到他们那一刻的值. 已删除的项不会被遍历到. 如果已访问的元素在迭代时被删除了 (例如使用 shift()) , 之后的元素将被跳过
示例:
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta http-equiv="X-UA-Compatible" content="ie=edge" />
- <title>js foreach 函数 注意事项 </title>
- </head>
- <body>
- <script src="https://cdn.bootCSS.com/lodash.js/4.17.10/lodash.min.js"></script>
- <script type="text/javascript">
- var words = ["one", "two", "three", "four"];
- words.forEach(function(word) {
- console.log(word);
- if(word === "two") {
- // 会改变输出顺序
- //words.shift();
- // 不会改变输出顺序
- words.push('5')
- // 不能使用 break
- //break
- // 不能使用 continue
- //continue
- }
- });
- </script>
- </body>
- </html>
来源: http://www.bubuko.com/infodetail-2747003.html