В 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
,