我如何打破函数内部的循环并 return 该函数的值? (Javascript)

How do I break a loop inside the function and return a value for that function? (Javascript)

我想在这里打破 for 循环和 return false 这样它就不会继续用数组的其余元素和 return 我不想要的值来测试条件它到 return。 这是一个代码,应该测试小于 100 的质数对数字的整除性。

var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];
var primetest = function (a) {
for (i = 0; i < primenumbers.length; i += 1) {
    if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
        return false;
    } else {
        return true;
    }
}
}

您的代码的问题不在于它不会在您希望它退出时退出,而是它即使在您不希望它退出时也会退出。

else 的情况下不要 return 任何东西,而是等到循环完成 return 结果是在循环中找不到匹配项:

var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];

function primetest(a) {
  for (i = 0; i < primenumbers.length; i += 1) {
    if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
        return false;
    }
    return true;
  }
}

你的问题是两个 return 语句都在循环内,因此循环将始终只执行第一次迭代,然后执行 return。它永远不会测试数组中第一个元素以外的任何元素。

解决方案:将其中一个语句移出循环,以便检查所有数组元素,如果 none 匹配,则执行另一个 return 语句:

var primenumbers = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97];

var primetest = function (a) {
    for (i = 0; i < primenumbers.length; i += 1) {
        if ((a !== primenumbers[i]) && (a % primenumbers[i] === 0)) {
            return false;
        }
    }
    return true;
}