为什么这个函数会返回false?

时间:2018-01-24 16:12:20

标签: javascript if-statement return

假设输入不等于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));

4 个答案:

答案 0 :(得分:1)

  

下面的'return true'不会覆盖返回值吗?

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

您举了numb = 15的例子。显然15不是素数。该函数将在return falsex =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));