while
var i = 0
while(boolean) {
i++
}
i=10
while(i--){// while(0) equals while(false)
return i
}
for
for ([initialization]; [condition]; [final-expression]) {
//The initialization statement is executed one time only before the loop starts
//if condition starts as false, your loop will never execute.
//The final-expression is executed at the end of each loop iteration
}
var i = 0
for(console.log(`initialization 可选`);true;console.log(`final-expression 可选`)) {
i++; if(i>2){break;}
}
var i = 0
for(;true;) { i++; if(i>2){break;} }
for(console.log(`for`);;){}
//for ([执行一次的表达式]; [决定循环是否结束的判断]; [每一次循环都会执行的表达式]);
const array = [1,2,3,4,5]
for(let k, j, i = array.length; i; array[i-1] = array[i-1] * 2, j = i , k = i, i = --j, ++k, console.log(`i:${i}, j:${j}, k:${k}`));
// array 的值变成了[2, 4, 6, 8, 10]
// 展示for 循环不用花括号也能完成一些工作
do while
do {
i++; //run at least once
}while (i < 5) //while has no {}
Recursion 递归,方法体内调用自己
//for
function multiply(arr, n) {
var product = arr[0];
for (var i = 1; i <= n; i++) {
product *= arr[i];
}
return product;
}
//recursive
function multiply(arr, n) {
if (n <= 0) {
return arr[0];
} else {
return multiply(arr, n - 1) * arr[n];
}
}
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Loops_and_iteration
// loops
// for(;;){}
// while(){}
// do...while()
// label/break/continue
// for...in, 遍历对象的所有可枚举的属性
// for(index in object){} // for in 得到的是下标
// for...of, 遍历可迭代对象
// for(item of object){} // for of 得到的是元素