0%

JS 迴圈 Loop 裡的 return

前言

可能在 42 學 C 的時候,學校規定只能用 while 迴圈,所以已經習慣 While 一行行跑的步驟,自從開始用 for 之後,雖然碼比較簡潔,但自己千萬沒想到對它的誤解這磨深…..。以為是只要條件符合就直接 i++ 了,但其實並不是!!是如果條件符合,會先去跑我們要叫它做的事,然後再 i++ 。視覺上看是條件符合後就 i++ 是個大雷,切記。
==也就是說只要條件符合+ return,就會跳出 loop==

[ 第一題 ]

1
2
3
4
5
6
function test1() {
for (var i = 1; i <= 10; i++) {
return i;
}
}
console.log(test1()); // 1

而 while 迴圈的寫法,真的就一行行跑,i <= 10 條件符合再去做該做的事,做完該做的事再 i++ ,但當我們回傳時就會終止程式,當然也就不會跑下一行 i++

1
2
3
4
5
6
7
8
function test2() {
var i = 1;
while (i <= 10) {
return i;
i++;
}
}
console.log(test2()); // 1

==很重要,所以再說一次==

注意一旦 return 程式就會因 return 而終止跳出程式

這題的結果是回傳 123 便終止結束
[ 第二題 ]

1
2
3
4
5
6
function test() {
return 123;
for (var i = 1; i <= 10; i++) {
return i;
}
}

==很重要,所以再說一次==

一旦 return 程式就會因此終止跳出程式,if 也是

[ 第三題 ]

1
2
3
4
5
6
7
8
9
function test() {
debugger;
for (var i = 1; i <= 10; i++) {
if (i % 3 === 0) {
return i;
}
}
}
console.log(test());

這題回傳是 3 ,即使條件是 i <= 10 ,但遇到( i % 3 === 0 ) 3 除 3 無餘數就回傳 i ,程式因此終止。
第 1 圈 i=1 除 3= 有餘數 no return i++ = i=2
第 2 圈 i=2 除 3= 有餘數 no return i++ = i=3
第 3 圈 i=3 除 3= 無餘數 return i = 3 結束

[ 第四題 ]
經過上三題的觀念釐清,這題總算試著用腦袋跟著程式跑而猜出會跑出 6 了

1
2
3
4
5
6
7
8
9
function test() {
for (var i = 1; i <= 10; i++) {
if (i > 5 && i % 2 === 0) {
return i;
}
}
}

console.log(test());

huli 大好用心,這幾題就是要釐清 return 扮演的角色:回傳值後 離開!