为什么这个do / while循环崩溃了?

时间:2014-02-13 16:26:48

标签: javascript

var doLoop = ("This is a do loop ya'll");    
var doLoopArray = [];    
var doLoopCount = 1; 

do (console.log(doLoop)); 
while(doLoopCount <= doLoop.length); {
     console.log(doLoop(0, doLoopCount));
     doLoopCount += 1;
}

我认为这个循环会运行23次(doLoop字符串中的字符数然后停止,但它似乎是无限的。

3 个答案:

答案 0 :(得分:4)

问题是您拥有while之后的代码正文。这不是[do-while 2所在的地方!代码应该放在do块中。

您的代码被解析为:

do{
    (console.log(doLoop));
}
while(doLoopCount <= doLoop.length);
{
     console.log(doLoop(0, doLoopCount));
     doLoopCount += 1;
}

这就是无限循环的原因。它将{}中的代码视为block,而不是do-while结构的一部分。

您需要正确构建do-while。应该是:

do{
    console.log(doLoop);
    console.log(doLoop(0, doLoopCount));
    doLoopCount += 1;
} while(doLoopCount <= doLoop.length);

P.S。 doLoop(0, doLoopCount)不起作用。 doLoop是一个字符串,而不是一个函数。

答案 1 :(得分:3)

do语法是:

  1. do
  2. 陈述或阻止
  3. while条件
  4. 您在while之后 ,然后

    应该是:

    do

答案 2 :(得分:0)

这是您的代码,具有直观的缩进。

var doLoop = ("This is a do loop ya'll");    
var doLoopArray = [];    
var doLoopCount = 1; 

do ({
  // You never increment doLoopCount in the body of the loop
  console.log(doLoop);
} while(doLoopCount <= doLoop.length);

// This is a separate block that is not part of the loop.
{
  // doLoop is not a function.
  console.log(doLoop(0, doLoopCount));
  doLoopCount += 1;
}

您的循环将无限运行,并且最终不会到达非法呼叫。

你可能意味着什么就像

var doLoopCount = 1; 
console.log(doLoop);
while (doLoopCount < doLoop.length) {
  console.log(doLoop[doLoopCount]);
  doLoopCount += 1;
}

或更好

console.log(doLoop);
for (var doLoopCount = 0; doLoopCount < doLoop.length; ++doLoopCount) {
  console.log(doLoop[doLoopCount]);
}