假设输入不等于 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));
返回值不会被下面的“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 的调试器对于跟踪执行非常有用。
执行return语句时,return之后的语句不执行。程序离开函数并转到调用该函数的语句。
返回与休息不同;它不仅跳出循环,而且返回整个函数的值。希望这有帮助。
加夫。
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));