请有人向我解释以下提到的功能之间的区别

时间:2019-03-13 21:31:30

标签: javascript for-loop

第一个功能

function isPrime(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0){
            return false;
        }else{
            return true;
        }
    }
}

第二个功能

function isPrime(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0)
            return false;
    }
    return true;
}

我真的无法将这段代码束之高阁。

1 个答案:

答案 0 :(得分:0)

由于else语句,第一个迭代将在第一次迭代后立即停止。 return打破了循环。它只会测试您输入的数字是num%2 == 0是偶数还是奇数。

只有条件被验证(再次,返回中断循环)或在所有迭代结束时,第二个才会停止。

在您的示例中,只有第二个给出了预期的结果:

function isPrimeA(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0){
            return false;
        }else{
            return true;
        }
    }
}

function isPrimeB(num) {
    if(num < 2) return false;
    for (var i = 2; i < num; i++) {
        if(num%i==0)
            return false;
    }
    
    return true;
}

console.log(isPrimeA(15))
console.log(isPrimeB(15))