Я использую ворс и для следующих целей:Что случилось с тем, если (json.RowKey = json.NewRowKey!)
if (json.RowKey != json.NewRowKey)
Это дает мне сообщение:
Expected '!==' and instead saw '!='.
Может кто-то объяснить, что это означает?
Я использую ворс и для следующих целей:Что случилось с тем, если (json.RowKey = json.NewRowKey!)
if (json.RowKey != json.NewRowKey)
Это дает мне сообщение:
Expected '!==' and instead saw '!='.
Может кто-то объяснить, что это означает?
==
попытается преобразовать типы двух операндов, чтобы они были одинаковыми, прежде чем сравнивать их. Таким образом, "2" == 2
- true
.
===
не будет пытаться преобразовать типы двух операндов, поэтому, если они не одного типа, они никогда не будут ===
. Таким образом, "2" === 2
- false
.
Лучше использовать ===
и !==
как ваш выбор по умолчанию и использовать только ==
или !=
когда вы явно хотите, чтобы преобразование типа. Если вы не ожидаете, что два операнда будут разных типов, то ===
и !==
с большей вероятностью будут делать то, что вы ожидаете.
Это позволяет избежать ошибок при кодировании, когда вещи на самом деле не равны, и ваш код не предназначен для того, чтобы они были равны.
Некоторые необычные вещи, которые происходят с ==
(и не случаются с ===
), которые вы не можете ожидать и могут привести к неприятностям. Все эти оценки в true
:
null == undefined
false == '0'
0 == '0'
0 == ''
Там более подробно написано здесь: Which equals operator (== vs ===) should be used in JavaScript comparisons?
Это предупреждение, что говорит вам, что вы должны рассмотреть возможность использования оператора !==
вместо !=
.
С поверхности они оба выполняют одно и то же: сравните, не совпадают ли эти два элемента. Однако !==
гарантирует, что оба элемента имеют один и тот же тип (т. Е. Он не будет пытаться преобразовать, скажем, строку в число, если один сравниваемый элемент является строкой, а другой - числом), поэтому это в целом безопаснее использовать и помогает избежать ошибок сравнения.
Для получения более подробной информации, смотрите здесь: Which equals operator (== vs ===) should be used in JavaScript comparisons?
Да,
if("1" == 1) //Returns true because it will convert the second 1 into a string to match
но
"1" !== 1 //Returns false because the first 1 is a string and the second 1 is an integer.
Мы говорим о переменных типов; с двумя равными знаками, javascript (и php) будет вызывать переменную для вас (преобразовать целое число 1 в строку 1, чтобы сделать совпадение и быть истинным), но со вторым утверждением это не будет.
1 === 1 //True
1 === "1" //False
1 == "1" //True
1 == 1 //True
Надеюсь, что мой ответ имеет смысл для вас.
!== не равно (ни значение или типа) Например: var x = 5; x !== "5" returns true var x = 5; x !== 5 returns false
«Крокфорд сказал, что использование двойных равным (==) для сравнения объектов всегда плохая идея, потому что это делает неявное преобразование типов.» [0] (http://osric.com/chris/accidental-developer/2012/01/douglas-crockford-programming-style-and-your-brain/) [1] (http://shop.oreilly.com /product/9780596517748.do) – pdoherty926