指在 loop 內部還有另一個 loop 的情況,內部迴圈以及外部迴圈可以是任何類型
執行規則:內部迴圈將在外部迴圈的每次迭代中,從頭到尾執行一次
for (let i = 0; i < 3; i++) {
for (let j = 10; j < 15; j++) {
console.log(j);
}
}
// -> 10, 11, 12, 13, 14, 10, 11, 12, 13, 14, 10, 11, 12, 13, 14
// 執行順序
// i = 0, j = 10, 11, 12, 13, 14
// i = 1, j = 10, 11, 12, 13, 14
// i = 2, j = 10, 11, 12, 13, 14
for (let i = 0; i < 3; i++) {
for (let j = 10; j < 15; j++) {
console.log(i, j);
}
}
// -> 0 10, 0 11, 0 12, 0 13, 0 14, 1 10, 1 11, 1 12, 1 13, 1 14, 2 10, 2 11, 2 12, 2 13, 2 14
計算執行次數
let counter = 0;
// -> 總共執行次數是外面 100 * 裡面 500
for (let i = 0; i < 100; i++) {
for (let j = 0; j < 500; j++) {
counter++;
}
}
console.log(counter); // -> 50000
程式碼放置位置不同,所產生的結果會不一樣
for (let i = 0; i < 100; i++) {
let counter = 0;
for (let j = 0; j < 500; j++) {
counter++;
}
console.log(counter); // -> 500
}
用於終止存在它的迴圈
for (let i = 0; i < 100; i++) {
console.log(i);
if (i == 10) {
break;
}
}
break 語句存在於 nested loop 中,它只會終止那些包含 break 語句的 loop
for (let i = 0; i < 100; i++) {
for (let j = 0; j < 500; j++) {
console.log(j);
if (j == 3) {
break;
}
}
}
// -> 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...(print 100 次)
若要完全終止 nested loop,則需要使用return關鍵字,並且要使用 return,必須將程式碼放在function裡
function myFunc() {
for (let i = 0; i < 100; i++) {
for (let j = 0; j < 500; j++) {
console.log(j);
if (j == 3) {
return;
}
}
}
}
myFunc();
強制執行循環的下一次迭代,跳過 continue 語句之後的循環內的代碼,開始循環的下一次迭代
for (let i = 0; i < 10; i++) {
if (i == 3) { // -> 當i = 3時,下面的console.log(i)會被跳過,強制執行下一個循環
continue;
}
console.log(i); // -> 0, 1, 2, 4, 5, 6, 7, 8, 9
}
let arr = ["Phoebe", "Darren", "Candy", "Louis"];
for (let i = 0; i < arr.length; i++) { // -> arr.length要用 < ,不能用 <=
console.log(arr[i] + " is my friend.");
}
Math 是一個 JavaScript 內建物件,具有 數學常數 和 函數 的 屬性 和 方法
Math.PI
console.log(Math.PI); // -> 3.141592653589793
Math.E
console.log(Math.E); // -> 2.718281828459045
Math.pow(x, y)
pow -> power
console.log(Math.pow(3, 2)); // -> 9 (3^2)
Math.random()
return 的值是 [0, 1)
,涵蓋 0 但不含蓋 1,介於 0 ~ 1 間的小數
console.log(Math.random()); // 介於 0 ~ 1 間的小數
Math.sqrt(x)
開根號 square root
console.log(Math.sqrt(2)); // -> 1.4142135623730951
Math.abs()
絕對值 absolute value
console.log(Math.abs(-2)); // -> 2
Math.floor()
向下取整數(無條件捨去)
console.log(Math.floor(9.999999)); // -> 9
Math.ceil()
向上取整數(無條件進位)
console.log(Math.ceil(9.999999)); // -> 10
下一篇文章學習進階的JS引擎、無限大、展開運算符與其餘運算符、強制轉型、相等比較。