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字符串中的字符数然后停止,但它似乎是无限的。
答案 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
语法是:
do
while
条件您在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]);
}