为什么赋予 return 语句的值不会被后面的 return 语句覆盖?

问题描述 投票:0回答:4

假设输入不等于 1 或 2(例如输入 15),它将通过循环,返回 false,但是该返回值不会被其下方的“return true”覆盖吗? for 循环?

帮助理解这一点将不胜感激。

function checkIfPrime(numb) {
    if (numb === 1) {
        return false;
    } else if (numb === 2) {
        return true;
    } else {
        for (let x = 2; x < numb; x++) {
            if (numb % x === 0) {
                return false;
            }
        }
        return true;
    }
}

console.log(checkIfPrime(2));
console.log(checkIfPrime(15));
console.log(checkIfPrime(17));
console.log(checkIfPrime(19));
javascript if-statement return
4个回答
1
投票

返回值不会被下面的“return true”覆盖吗?

嗯,不。当您

return false
时,整个函数执行停止并返回
return
值。

你举了

numb = 15
的例子。显然15不是素数。该函数将在
return false
x =3
一次
for-loop
。此时函数执行将完全终止并返回值
false
。它根本不会进展到
return true
语句。

对于质数示例,例如

numb= 17
,for 循环将执行,并且
if-statement
永远不会为真。这意味着函数执行将继续进行,并且将执行
return true
语句,从而使函数返回
true

查看此 W3 学校文档,以进一步解释

return
声明。

作为 T.J. Crowder 在评论中建议,使用 IDE 的调试器对于跟踪执行非常有用。


0
投票

执行return语句时,return之后的语句不执行。程序离开函数并转到调用该函数的语句。


0
投票

返回与休息不同;它不仅跳出循环,而且返回整个函数的值。希望这有帮助。

加夫。


0
投票

return
是终止符,因此当前代码块在遇到语句时退出

您所描述的行为将由这段代码创建

function incorrectCheckIfPrime(numb) {
    var returnValue;
    if (numb === 1) {
        returnValue = false;
    } else if (numb === 2) {
        returnValue = true;
    } else {
        for (let x = 2; x < numb; x++) {
            if (numb % x === 0) {
                returnValue = false;
            }
        }
        returnValue =true;
    }
    return returnValue;
}

console.log(checkIfPrime(2));
console.log(checkIfPrime(15));
console.log(checkIfPrime(17));
console.log(checkIfPrime(19));
© www.soinside.com 2019 - 2024. All rights reserved.