有人可以向我解释这个 "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 会在每次 contador
为 true
时执行 [它不检查 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
。这将使它更容易阅读。
我正在研究循环并试图理解这个 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 会在每次 contador
为 true
时执行 [它不检查 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
。这将使它更容易阅读。