В JavaScript какая разница между равно ('==' & '===')

Я пытаюсь понять равенство в JavaScript. Вот код

    var x = prompt("What is 10 + 10");
    if (x === 10) {
        document.write("Correct")
    }
    else {
        document.write("Incorrect")
    }

Почему бы мне не сделать знак равенства как "===". Так что, если "10" равно ("===") "x"(ответ пользователя), тогда это должно быть правильно, верно?

Я искал и в Stack Overflow, и в W3Schools, но не смог найти то, что искал. Я полагаю, что я просто не понимаю эту "правду или ложь". Я имею в виду, что это выглядит как очень простое уравнение. Помощь была бы отличной, спасибо, ребята!

2 ответа

=== строгое равенство типов, которое сравнивается по значению и типу

== является нестрогим равенством типов, которое сравнивается только по значению.

Другими словами, == выполняет преобразование типов, а затем сравнивает значения на равенство. вот несколько примеров

"3" == 3
=> true

Пояснение: Строка 3 преобразуется в число 3, которое равно 3.

"3" === 3
=> false

Объяснение: Строка не преобразована в число. Таким образом, строка 3 не равна числу 3.

В вашем примере incorrect будет написано в документе. Это потому, что результат prompt возвращает строку, и вы выполняете строгое равенство с числом.

В вашем случае переводчик видит это так

if ("10" === 10) {
    // does the string "10" equal the number 10? If so
    document.write("Correct")
}
else {
    // Hey, wait a minute. It doesn't equal the number. I should write "Incorrect" instead.
    document.write("Incorrect")
}

В Javascript,

== означает: эквивалентно

=== означает: идентично

Когда значение x является "10", x эквивалентно 10,

Но это не идентично 10,

Другие вопросы по тегам