这个JavaScript代码错了吗?

时间:2013-08-27 14:50:20

标签: javascript

在Codecademy的这个JavaScript lesson中,需要编写一个do / while循环,我写了这个,然后传递

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

};

getToDaChoppa(25);

但仔细观察我的代码时,我认为我可能完全错了,因为a没有定义的值?

或者因为b的变量在函数内部是局部的,所以它不会影响传递值为25的b参数吗?

非常感谢提前。

6 个答案:

答案 0 :(得分: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如何运作

的例子

答案 1 :(得分:3)

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

答案 2 :(得分:1)

您要将b的值分配给a,并附上语句var a = b;

由于您使用do while循环,循环将运行一次。

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

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

答案 3 :(得分:0)

  

这个JavaScript代码错了吗?

取决于您想要解决的问题。

对我来说这看起来很无用,因为循环体总是会被执行一次。

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

答案 4 :(得分:0)

我认为你所追求的是:

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

};

如其他海报所述,如果a = b循环只运行一次。这个版本应该运行预期的次数(如果真的是预期的那样)。

答案 5 :(得分:0)

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

然而,ab变量以及do..while循环可能根本不存在,它们只会增加代码的不必要的复杂性,可以简化为一行( console.log()来电。{/ p>