微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环基础

如何解决循环基础

有人可以让我知道我在哪里出问题了吗?运行代码时,我得到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;

解决方法

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

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

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

let countDown = 10;

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

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

,

循环不是问题-范围可变是问题。有关范围的信息,请参见以下链接: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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。