簡體   English   中英

為什么我的 if/else 語句不起作用? (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);

更多閱讀: 在 JavaScript 比較中應該使用哪個等於運算符 (== vs ===)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM