freeCodeCamp/guide/russian/miscellaneous/equality-vs-identity-operator/index.md

4.1 KiB
Raw Blame History

title localeTitle
Equality Vs Identity Operator Оператор идентификации равенства Vs

В JavaScript есть два оператора, которые могут использоваться для сравнения двух значений: == и === . Они кажутся точно такими же, но они работают по-разному, и в некоторых случаях они будут давать разные результаты.

Оператор акций

Оператор равенства (==) сравнивает два значения после всех необходимых преобразований типов. Давайте рассмотрим несколько примеров:

0 == ''             // -> true 
 false == 'false'    // -> false 

В первом примере и 0, и '' (пустая строка) подвергаются автоматическому преобразованию. Они оба преобразуются в ложное предоставление:

false == false 

Это, очевидно, верно . Во втором примере «false» непустая строка оценивается как true, делая все выражение ложным.

Оператор идентификации

Для сравнения, оператор идентичности (===) вернет true тогда и только тогда, когда оба сравниваемых значения имеют один и тот же тип и имеют одинаковое значение. Если мы попытаемся сравнить значения двух разных типов, он всегда будет возвращать false .

false === 0            // -> false 
 0 === ''              // -> false 
 5 === 5                  // -> true 

Если быть точным, === проверяет, ссылаются ли две переменные на один и тот же объект или в случае типов значений (например, int , double , String , bool и т. Д.), Если оба они имеют одинаковое значение.

var array1 = [ 5, 6, 7 ]; 
 var array2 = [ 5, 6, 7 ]; 
 var array3 = array2; 
 
 array1 === array2      // -> false 
 array1 == array2      // -> false 
 
 array2 === array3      // -> true 
 array2 == array3      // -> true 

И array1, и array2 имеют одинаковый тип, и они равны, но массив сравнения1 === array2 возвращает false, поскольку они ссылаются на разные объекты. array2 === array3 возвращает true, поскольку обе переменные относятся к одному и тому же объекту.

Какому оператору я должен пользоваться?

Важно понимать разницу между == и ===, но какой оператор следует использовать?

При использовании == оператор JavaScript выполнит все преобразования, необходимые для сравнения двух значений. Кажется, что это действительно удобно, но последствия этого преобразования могут быть запутывающими и вызывать очень сложную задачу отслеживания ошибок.

Дуглас Крокфорд, автор книги « JavaScript: Хорошие части» предполагает, что === следует использовать везде, а не ==, чтобы избежать потенциальных ошибок. В большинстве случаев вам следует следовать этому совету, если вы специально не хотите использовать автоматическое преобразование типов.