![](/img/trans.png)
[英]Why won't my break work in my if else statement in javascript?
[英]Why won't my if/else statement work? (JavaScript)
我正在尝试编写一个脚本来测试用户输入的数字是否为质数。 我正在编写几种不同的素性测试,但特别是其中一个让我很难受。
function isPrimeSix() {
var numberPrimeSix = document.getElementById("primeSixInput").value;
var loopCount = 0;
for (var i = 1; i < Math.floor((numberPrimeSix / 6) + 1) + 1; i++)
{
if (numberPrimeSix === (6 * i) + 1)
{
//Irrelevant code here//
}
else if (numberPrimeSix === (6 * i) - 1)
{
//More irrelevant code//
}
else
{
loopCount++
}
};
if (numberPrimeSix === 2 || numberPrimeSix === 3 || numberPrimeSix === 5 || numberPrimeSix === 7)
{
alert(numberPrimeSix + " is prime.");
}
else if (prime === false || loopCount === Math.floor((numberPrimeSix / 6) + 1))
{
alert(numberPrimeSix + " is not prime.");
}
else if (prime === true)
{
alert(numberPrimeSix + " is prime.");
}
else
{
alert("Error");
};
}
每次for
循环运行时,嵌入的if
语句都不会求值,即使对于i
特定值,其中一个语句为真。 无论分配给numberPrimeSix
数字是什么,脚本将始终转到循环的else
部分,这意味着将弹出一个警报,告诉我该数字不是素数(因为loopCount
的值等于定义的值)最后一个if
语句)。
谁能告诉我这是为什么? 我希望这是有道理的,如果需要“无关代码”,我会提供。 谢谢!
字符串永远不会与数字完全相等 ( ===
)。 在 JavaScript 中,如果使用==
,则操作数将在比较之前转换为相同类型。 如果您改为使用===
,则该步骤将被跳过,而是将测试它们是否严格相等,这意味着相同的类型和值,而不仅仅是相同的值。
你有两个选择。 用==
替换===
,或者,在循环之前转换值并继续使用严格相等。 在循环之前转换值会快得多,这样您就不会在每次迭代时一遍又一遍地转换它。
var numberPrimeSix = parseInt(document.getElementById("primeSixInput").value, 10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.