循环基础
Looping Fundamentals
谁能告诉我哪里出了问题?当我 运行 代码时,我得到 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10。我如何让循环停止在 0?当我删除最后一行代码 (console.log(countDown);) 时,循环在 0 处结束,但挑战尚未完成。非常感谢任何帮助!
使用 for 循环,每次循环 运行s 时将 countDown 减一,直到它等于 0,利用循环功能而不是分别记录每个数字。
let countDown = 10;
// ADD CODE HERE
for (let countDown = 10; countDown>0;countDown--)
{
console.log(countDown);
}
// Uncomment the below line to check your work
console.log(countDown) // -> should print 0;
问题是您的代码中有两个 countDown
变量,一个在顶部,另一个在 for
循环的初始化部分声明为循环变量。
它们都是不同的变量。您的循环已正确终止,但是当您在循环后记录 countDown
变量时,您没有记录循环中使用的变量,而是记录在循环上方声明的变量。
您不需要在循环中声明countDown
变量,只需使用在循环上方声明的变量即可。
let countDown = 10;
for (; countDown > 0; countDown--) {
console.log(countDown);
}
console.log(countDown) // -> should print 0;
这不是循环的问题 - 这是变量范围的问题。请参阅此 link 以了解范围是什么:wiki
let countDown = 10; // global scope - visible everywhere
for (let countDown = 10; countDown>0;countDown--) // local scope -- visible only in the loop
{
console.log(countDown); // this is again the inner variable with local scope
}
console.log(countDown) // the global scope variable again, hence 10;
对于问题本身,实际上您有两个同名变量countdown
。一个在循环外定义,另一个在循环声明中定义。后者会遮蔽(隐藏)前者,因此对内部变量所做的任何更改 - 范围较小,仅包含循环体 - 在循环结束后不可见。所以,实际上,你的代码并没有改变外层 countdown
.
的值
为了让它工作,不要声明内部变量,并将外部变量重新用作循环计数器:
let countDown = 10;
for (; countDown > 0; countDown--) {
console.log(countDown);
}
console.log(countDown);
谁能告诉我哪里出了问题?当我 运行 代码时,我得到 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 10。我如何让循环停止在 0?当我删除最后一行代码 (console.log(countDown);) 时,循环在 0 处结束,但挑战尚未完成。非常感谢任何帮助!
使用 for 循环,每次循环 运行s 时将 countDown 减一,直到它等于 0,利用循环功能而不是分别记录每个数字。
let countDown = 10;
// ADD CODE HERE
for (let countDown = 10; countDown>0;countDown--)
{
console.log(countDown);
}
// Uncomment the below line to check your work
console.log(countDown) // -> should print 0;
问题是您的代码中有两个 countDown
变量,一个在顶部,另一个在 for
循环的初始化部分声明为循环变量。
它们都是不同的变量。您的循环已正确终止,但是当您在循环后记录 countDown
变量时,您没有记录循环中使用的变量,而是记录在循环上方声明的变量。
您不需要在循环中声明countDown
变量,只需使用在循环上方声明的变量即可。
let countDown = 10;
for (; countDown > 0; countDown--) {
console.log(countDown);
}
console.log(countDown) // -> should print 0;
这不是循环的问题 - 这是变量范围的问题。请参阅此 link 以了解范围是什么:wiki
let countDown = 10; // global scope - visible everywhere
for (let countDown = 10; countDown>0;countDown--) // local scope -- visible only in the loop
{
console.log(countDown); // this is again the inner variable with local scope
}
console.log(countDown) // the global scope variable again, hence 10;
对于问题本身,实际上您有两个同名变量countdown
。一个在循环外定义,另一个在循环声明中定义。后者会遮蔽(隐藏)前者,因此对内部变量所做的任何更改 - 范围较小,仅包含循环体 - 在循环结束后不可见。所以,实际上,你的代码并没有改变外层 countdown
.
为了让它工作,不要声明内部变量,并将外部变量重新用作循环计数器:
let countDown = 10;
for (; countDown > 0; countDown--) {
console.log(countDown);
}
console.log(countDown);