gpt4 book ai didi

javascript - 为什么我的函数遇到return后会执行剩下的代码(return inside of two loops)

转载 作者:行者123 更新时间:2023-11-30 11:02:16 25 4
gpt4 key购买 nike

我不明白为什么这个函数会在应该调用 return 语句之后运行剩余的代码:

function func(i) {
while (i >= 0) {
if (i < 0) {
return;
}
document.write("inside loop, i is " + i);
document.write("</br>");

i--;
} //end of while
document.write("end of function, i is " + i);
document.write("</br>");
}
func(2);

输出:

inside loop, i is 2; 
inside loop, i is 1;
inside loop, i is 0;
end of function, i is -1;

我期待:

inside loop, i is 2; 
inside loop, i is 1;
inside loop, i is 0;
  1. 如果 return 应该在它之前调用,为什么要写“end of function, i is -1”这一行?

  2. 如果我用 while(true) 替换 while(i >= 0),该函数会给出预期的输出(没有最后一个 document.write)。这是为什么?

  3. 如果我将 while 循环之后的代码替换为:

    return document.write("end of function, i is " + i);
    document.write("end 2 of function, i is " + i);

最后一行代码(函数的结尾 2,i 是 )没有被执行。为什么代码在第一次返回后继续执行,而不是在第二次返回后继续执行?

  1. 如果我从 if 语句中取出 return,函数将在调用 return 时停止:

    while (i >= 0) { 
    document.write("inside loop, i is " + i);
    document.write("</br>");
    i--;
    return;
    }

输出是:

inside loop, i is 2

为什么最后一个document.write("end of function, i is ")在这种情况下不执行?

最佳答案

你的 while条件:

while (i >= 0) {

永远return同时为真测试为真:

if (i < 0) {    
return;
}

iwhile 的顶部之间没有变化循环和 i < 0测试,if永远不会实现。在最后一次迭代中,i将在 while 结束之前从 0 递减到 -1 block ,并且由于 i-1失败 while测试,将不会运行进一步的迭代(并且不会遇到 if 检查和 return)。

如果你有 while无限循环,直到 if语句被执行,该函数确实会返回:

function func(i) {
while (true) {
if (i < 0) {
return;
}
document.write("inside loop, i is " + i);
document.write("</br>");

i--;
} //end of while
document.write("end of function, i is " + i);
document.write("</br>");
}
func(2);

至于

  1. If after the while loop I replace the code with:

    return document.write("end of function, i is " + i);
    document.write("end 2 of function, i is " + i);

  1. If I take the return out of the if statement the function stops when return is called:

    while (i >= 0) { 
    ...
    return;

在这两种情况下,return语句实际遇到的,所以函数按预期在那里终止。 (在您的原始代码中,解释器永远不会运行 return ,因为 if 永远不会实现)

关于javascript - 为什么我的函数遇到return后会执行剩下的代码(return inside of two loops),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com