1. while循环
function testBreak(x) { var i = 0;
while (i < 6) { if (i == 3) { break; //跳出循环,执行return语句 } i += 1; }
return i * x; }
var ret = testBreak(6); console.log(ret);
结果: 2.普通for 循环
自行指定循环次数
3.for..in 循环
属历史遗留,用于遍历对象的属性(数组的索引值也算属性)。 但有一个缺点:如果手动向数组添加成员属性,则: 虽然数组的length不变,但用for..in 遍历数组会遍历到那些新定义的属性
4.for..of 循环(ES6 )
for..of 循环修复了for..in 存在的问题,他只遍历属于对象本身的属性值。 且这个对象必须是iterable 可被迭代的。如Array, Map, Set .
for...of 语句在可迭代对象(包括 Array ,Map ,Set ,String ,TypedArray ,arguments 对象等等)
上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句 ---- MDN
5.forEach(callbackFn, ?thisArg)方法(ES5.1)
iterable可被迭代的对象都有forEach(callbackFn, ?thisArg)。 而Array, Map, Set对象都是可被迭代的。 forEach()接收一个回调函数callbackFn,每次迭代都回调该函数。 回调函数的参数列表为(value, key, iterable),依次是(值, 键, 可迭代的对象本身).
如为数组时
const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element)); //使用了箭头函数,低版本浏览器或不支持
//等价于[ES3写法]:array1.forEach(function(ele){console.log(ele);})
// expected output: "a" // expected output: "b" // expected output: "c"
截图: 为对象时,出现报错 补充: forEach 方法无法中断执行,总是会将所有成员遍历完。 如果希望符合某种条件时,就中断遍历,要使用for 循环. 总结
while可用array.
iterable可被迭代的对象类型有Array, Map, Set。
普通for循环可用于遍历数组。
for..in可遍历Array, Object对象,且会遍历到新添加的成员属性。
for..of 可遍历iterable可被迭代的对象(不包括Object)。且只遍历属于对象本身的属性。
iterable可被迭代的对象有成员方法forEach(),也只遍历属于对象本身的属性。
更多见: https://developer.mozilla.org/zh-CN/search?q=for 关于内外两层嵌套循环://结合 continue, break , label的使用 20200506 https://wangdoc.com/javascript/basic/grammar.html 后续补充 ... |