我正在尝试做一个函数,当数字在0-10之间时,我console.log一个短语。
我让它打印出这个短语10次,但为了让它通过测试平台,我需要在数字为0时打印出来,但它没有通过。
function doWhileLoop(num) {
var i = 0;
function incrementVariable() {
i++
return i;
}
do {
console.log(i, "I run once regardless.");
}
while (incrementVariable() <= 9);
}
doWhileLoop(10);
发布于 2020-01-23 07:27:31
仅当incrementVariable()小于收到的变量时才打印:
function doWhileLoop(num) {
var i = 0;
function incrementVariable() {
i++
return i;
}
do {
console.log("I run once regardless.");
}
while(incrementVariable() <= num);
}关键是循环条件必须考虑传递给doWhileLoop函数(while(incrementVariable() <= num))的参数。我猜这个练习试图向您展示,即使while中的条件为false,do块中的代码也将始终至少运行一次。所以下面的代码只运行一次:
do {
console.log("I run once regardless.");
}
while(false);使其不计入9之后
function doWhileLoop(num) {
if(num>9) {
num = 9;
}
var i = 0;
function incrementVariable() {
i++
return i;
}
do {
console.log("I run once regardless.");
}
while(incrementVariable() <= num);
}发布于 2020-01-23 07:47:34
注意,我不清楚您是否希望打印10次,无论是0还是10都不能包含在内。如果你想让它打印0..10,那实际上是11次。因此,适当地调整下面的示例。
请注意,在进行故障排除时,像我在下面的示例中所做的那样,打印i值是很有帮助的。当程序按预期运行时,您可以在最终提交之前从console.log中删除i。
当循环退出时,我还打印出i的最终值。
这是一个很好的比较点,可以用来理解循环是如何工作的,以及值在每种情况下是如何递增的。了解这些循环如何留下稍后可能会在程序中访问的变量,并将其与打印的值进行比较也是一件很好的事情。
前两个示例使用单独的函数并不只是为了递增,因为递增本身就是一个函数,并且是内置于语言中的。它还强调了如何以有用的方式利用该语言为增量提供的两种变体来控制端点条件。
在所有情况下,我都一直使用i < num,所以比较是有效的。
根据您的要求,也可以是i < num+1 (相当于i <= num)或i < num-1.调整此值将增加或减少打印的i的最后一个/最大值(以及循环结束后i的值)。
++i 0**..**9.打印10次:when++i i is
循环结束时返回i === 10。
(使用i <= num将打印0..10,并使用值11退出)
function doWhileLoop(num) {
let i = 0;
do {
console.log(i, "I run once regardless. ");
}
while (++i < num);
console.log("Final value of i:", i);
}
doWhileLoop(10);
作为比较,这个版本,
i++ 0**..**10.打印11次:wheni++ i is
循环结束时返回i === 11。
(使用i < num+1将打印0..9,并使用值10退出)
function doWhileLoop(num) {
let i = 0;
do {
console.log(i, "I run once regardless. ");
}
while (i++ < num);
console.log("Final value of i:", i);
}
doWhileLoop(10);
++i和i++的区别在于:
首先++i增量i,然后使用新值来确定是否再次运行循环。
i++首先根据i已有(并打印)的值确定是否再次运行循环,然后在之后但在再次运行循环之前(或在退出之前,如果不再运行循环)递增i。
在您的代码中,incrementVariable()函数的行为与上面的++i示例完全相同,因为while函数调用是在进行while比较之前执行的。
另一种解决方案是使用if-then来约束打印语句。
此版本打印10次: when i is 0..9。
循环退出时返回i === 10。
(在这种情况下,您可以控制循环的最终值,以及循环运行的次数,独立于打印的值。)
function doWhileLoop(num) {
var i = 0;
function incrementVariable() {
i++
return i;
}
do {
if (i < num) {
console.log(i, "I run once regardless.");
}
}
while (incrementVariable() < num);
console.log("Final value of i:", i);
}
doWhileLoop(10);
https://stackoverflow.com/questions/59869594
复制相似问题