【问题标题】:Looping Fundamentals循环基础
【发布时间】:2020-08-22 07:13:15
【问题描述】:

有人可以告诉我我哪里出错了吗?当我运行代码时,我得到 10、9、8、7、6、5、4、3、2、1、10。如何让循环在 0 处停止?当我删除最后一行代码 (console.log(countDown);) 时,循环在 0 处结束,但挑战尚未完成。非常感谢任何帮助!

使用 for 循环,每次循环运行时将 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;

【问题讨论】:

  • 你有可能有两个变量吗?您定义为 10 的外层。以及用于 for 循环的用途。

标签: javascript loops decrement


【解决方案1】:

问题是您的代码中有两个countDown 变量,一个在顶部,一个声明为循环变量,在for 循环的初始化部分。

它们都是不同的变量。您的循环已正确终止,但是当您在循环之后记录 countDown 变量时,您没有记录循环中使用的变量,而是记录循环上方声明的变量。

您不需要在循环中声明countDown 变量,只需使用循环上方声明的变量即可。

let countDown = 10;

for (; countDown > 0; countDown--) {
  console.log(countDown);
}

console.log(countDown) // -> should print 0;

【讨论】:

  • 你打败了我。 ?
【解决方案2】:

这不是循环的问题 - 这是变量范围的问题。请参阅此链接了解范围: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);

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2020-02-07
    • 2021-12-10
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多