假设输入不等于1或2(例如15的输入),它将通过循环,返回false,但不会被返回值覆盖返回值真正的'在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));
答案 0 :(得分:1)
下面的'return true'不会覆盖返回值吗?
嗯,不。当return false
整个函数执行停止并返回return
值时。
您举了numb = 15
的例子。显然15不是素数。该函数将在return false
内x =3
for-loop
false
。此时,函数执行将完全终止并返回值return true
。它根本不会进展到numb= 17
语句。
对于素数示例,例如if-statement
,for循环将执行,return true
永远不会为真。这意味着函数执行将进行并且true
语句将被执行,从而使函数返回return
。
有关get_type = lambda value: str(type(value)).split("'")[1]
声明的更详细解释,请查看此W3 Schools documentation。
作为T.J. Crowder在评论中建议,使用IDE的调试器对您来说非常有用。
答案 1 :(得分:0)
执行return语句时,不执行返回后的语句。程序离开函数并转到调用该函数的语句。
答案 2 :(得分:0)
回归不同于休息;它不仅会突破循环,还会返回整个函数的值。希望这会有所帮助。
GAV株系。
答案 3 :(得分: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));