1

在 Codecademy 的这个JavaScript 课程中,需要编写一个 do/while 循环,我已经写了这个,它通过了

var getToDaChoppa = function(b){
  var a = b;
  do{
    console.log("Dunno!");
    } while (a < b);

};

getToDaChoppa(25);

但是当仔细查看我的代码时,我认为我可能做错了,因为a没有定义的值?

或者由于变量b是函数内部的局部变量,它不会影响b传递值 25 的参数?

提前谢谢了。

4

6 回答 6

4

它只进行一次迭代,因为当do while loop开始时,条件不满足,因为ab相等。所以

var getToDaChoppa = function(b){
  var a = b;
  do{
    console.log("Dunno!");
    } while (a < b); //25 < 25, exit 

};

getToDaChoppa(25);

如果您想尝试do while循环尝试一些技巧,例如

var getToDaChoppa = function(b){
  var a = 10; //or whatever minor than b 
  do{
    console.log("Dunno!");
    a++; //when it reaches 25 or whatever value you set it breaks the loop
    } while (a < b);

};

这只是一个示例,让您了解如何do while工作

于 2013-08-27T14:53:02.300 回答
3

代码没问题,逻辑错了。您正在分配a的值b,因此它们将始终相等。

于 2013-08-27T14:52:07.387 回答
1

您正在使用语句分配bto的值avar a = b;

由于您使用的是 do while 循环,因此该循环将运行一次。

代码没有错,它旨在说明在循环的第一次迭代之后评估条件。

http://jsfiddle.net/puleos/QXC9z/

于 2013-08-27T14:53:36.037 回答
0

由于问题说“您的循环应该一次将您选择的字符串打印给编辑器”,我认为这是正确的。您的代码将打印字符串“Dunno!” 正好一次。

然而,aandb变量和do..while循环也可能根本不存在,它们只是给代码增加了不必要的复杂性,可以简化为一行(console.log()调用)。

于 2013-08-27T14:54:49.853 回答
0

这个 JavaScript 代码错了吗?

取决于你想解决什么问题。

它看起来对我来说毫无用处,因为循环体总是会执行一次。

while (a < b);将始终返回false,因为var a = b;并且a不会在循环中修改。

于 2013-08-27T14:52:13.657 回答
0

我想你追求的是:

var getToDaChoppa = function(b){
  var a = 0;
  do{
    console.log("Dunno!");
    a++;
  } while (a < b);

};

正如其他海报所提到的,如果a = b循环只会运行一次。这个版本应该运行预期的次数(如果这确实是预期的)。

于 2013-08-27T14:54:24.760 回答