[英]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.