如何解决循环基础
有人可以让我知道我在哪里出问题了吗?运行代码时,我得到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 举报,一经查实,本站将立刻删除。