有人可以向我解释这个 "while" 循环吗? (重复和变量)

Can someone explain me this "while" loop? (the repetitions and the variable)

我正在研究循环并试图理解这个 while 循环:

var contador = 2;
var na = "na";
while(contador)
{
    na += na;
    contador -= 1;
}
console.log(na + " Freddy ")

我知道这个结果是“nananana Freddy”,但我不明白为什么。

第一次迭代后“na”会有另一个“na”,所以它会是“nana”。 而且,在第一次迭代之后,“contador”将是 1,对吗? (康塔多 = 2-1)。那么为什么它继续添加“na”呢?

编辑:我现在明白了为什么它会继续迭代直到 contador 等于 0。但我仍然不明白“na”部分。 为什么在迭代 1 之后是“nana”,在迭代 2 之后是“nananana”?

我认为经过 2 次迭代后 na 等于“nanana”。原因不是“na += na”意味着它在每次迭代中添加一个“na”吗?

它继续是因为在 JavaScript 中 0 被认为是假的,所有其他正数都是真的。

第一次迭代后,字符串为“nana”,contador 为 1。

然后在下一次迭代中 na 已经是“nana”,所以 na+=na 表示“nananana”

只要 contador 不为零,

while(contador) 就会循环。它不会停止,直到 contador 达到 0

在第一个循环之后,na === "nana"contador === 1 是正确的。这不是零,所以它再次迭代,导致 na === "nananana"contador === 0。那是循环停止的时候。

while 会在每次 contadortrue 时执行 [它不检查 contador 是否仍为“2”,但如果 javascript 考虑值contador truthy)]。在这种情况下,它将被执行两次,因为“2”(第一个循环)和“1”(第二个循环)等于 true 但“0”不是。

现在,您可以注意到的一件事是,在第 5 行(发布在这句话下面的行)中,您正在递增变量 contador 本身的值,而不是字符串“na”。

    na += na; # After the equal sign is the variable name instead of a string

这意味着循环结果将是:

# First loop
# contador = 2
# var na = "na";
while(2)
{
    na += na; # It will be "na" plus "na"
    contador -= 1;


    console.log(na + " Freddy ")
    # Prints "nana Freddy "
}



# Second loop
# contador = 1
# var na = "nana";
while(1)
{
    na += na; # It will be "nana" plus "nana"
    contador -= 1;


    console.log(na + " Freddy ")
    # Prints "nananana Freddy "
}

在这两个循环之后 contador 变为 0,这使得它不再 运行。

所以基本上第 5 行总是重复变量的内容 na

如果您还有疑问,我建议更改变量的名称na。这将使它更容易阅读。