[英]Confused about the for loop in Javascript
這個函數的結果是:“yoyo my兄弟”。
為什么 yo 只在第一次迭代時添加,為什么結果不是:“yoyo yomy yobrother”?
function myFunction() {
var cars = ["yo", "my", "brother"];
var i = 2;
var len = cars.length;
var text = "yo";
for (; i < len; i++) { //typo, var i=0;
text += cars[i]+ " ";
}
};
哦,對不起,我不知道我怎么錯過了那個錯字 xD。 謝謝你的幫助。
在您的代碼中:
您應該將i
設置為0
以從第一個開始
數組的值。
您將yo
文本的另一個變量設置為用於追加的常量,並將text
變量設為空白。
如果您想獲得“yoyo yomy yobrother”結果,請執行以下操作:
function myFunction() {
var cars = ["yo", "my", "brother"];
var len = cars.length;
var text = "";
var yotext = "yo";
for (i=0; i < len; i++) {
text += yotext +cars[i]+ " ";
}
console.log(text);
};
myFunction();
以下假設您打算將 i 初始化為 0。
因為+=
運算符將文本附加到現有字符串。 您正在執行以下操作:
第一次迭代: "yo" + "yo" + " " = "yoyo "
第二次迭代: "yoyo " + "my" + " " = "yoyo my "
第三次迭代: "yoyo my " + "brother" + " " = "yoyo my brother "
for 循環通常包含三個部分:
1) 初始值設定項 - 為變量提供一個起點 2) 條件 - 只有在為真時才會運行循環 3) 修飾符 - 更改變量的值
因此,典型的 for 循環如下所示:
for (var i = 2; i < len; i++){
}
循環將以這種方式執行:
您是否有理由將 i 的值從 2 而不是 0 開始?
讓我們分解代碼。
我們有一個數組,汽車,包含 3 個項目。 然后聲明i
,它稍后在 for 循環中用作迭代器(計數器)。 我將繼續假設這是無意的,你的意思是i
在 for 循環內
for (var i=0; i<len; i++)
for 循環將括號內的代碼重復指定的次數。 for 語句的第一部分,在第一個分號后面,是迭代器。 i
將根據語句的第三部分在每次循環運行時進行更改,在本例中為i++
。 這意味着將i
增加 1。 for 語句的第二部分指出循環只會在i
小於len
重復 - 在這種情況下,數組中的項目數為 3。
最后,在 for 循環中有一行text += cars[i] + "";
這告訴 JavaScript 每次 for 循環運行時將字符串放在一起。 我們從"yo"
開始,然后在每次運行中:
i string
-------------------------
0 "yoyo "
1 "yoyo my"
2 "yoyo my brother"
因為代碼沒有將“yo”( text
初始值)添加到cars[i]+ " "
,而是將其值隨循環更改的text
到前面。
我相信您對+=
運算符而不是循環感到困惑。
行text += cars[i]+ " ";
相當於text = text + cars[i]+ " ";
.
通過循環, text
的值將隨着每次迭代而改變,如下所示。
- yo
0 yoyo
1 yoyo my
2 yoyo my brother
因此, text
的值將在第一次循環迭代中發生變化,並且不再是“yo”。 所以,難怪“yoyo yomy yobrother”行不通。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.