«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript



Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



Как известно символ «=» (знак равно) в Javascript означает «присвоить».

А символ «==» (два знака равно) - это оператор проверки равенства или неравенства различных типов данных. Именно об операторе равенства будет идти речь на этой странице и о том, как происходит преобразование типов в Javascript.



Два значения относятся к одному типу

Сначала рассмотрим пример, когда два сравниваемых значения относятся к одному типу (строка и строка, число и число и т.д.).

Фрагмент кода

var x = 1;
var y = 2;

if (x == y){
console.log(true);
}
else{
console.log(false);
}

var a = "Эхх...";
var b = "Эхх...";


if (a == b){
console.log(true);
}
else{
console.log(false);
}

Результат

Здесь все просто: два числа либо равны, либо нет. Со строками тоже: если набор символов в них совпадает, то они равны.

Два значения относятся к разным типам - Число и Строка

Как сравнить два операнда, если они относятся к разным типам?

Javascript имеет набор правил, согласно которым происходит преобразование типов (это когда одно из сравниваемых значений преобразовывается к типу другого значения, после чего происходит их сравнение).

Итак, начнем с самого простого: сравнение чисел и строк. При этом Javascript преобразует строку в число.

Фрагмент кода

var x = 99;
var y = "99";

if (x == y){
console.log(true);
}
else{
console.log(false);
}

Результат

Сравнение числа и строки

- - - - - - - - - - консоль браузера - - - - - - - - - -

true

При таком сравнении Javascript стремиться преобразовать строку в число. После этого сравниваются числа.

Число и Строка - NaN

Рассмотрим другую ситуацию сравнения чисел и строк.

Если Javascript не удается преобразовать строку в число, то в результате от выдаст NaN.

Фрагмент кода

var x = 99;
var y = "Эхх...";

if (x == y){
console.log(true);
}
else{
console.log(false);
}

Результат

Здесь при преобразовании типов строку не удается привести к числовому значению, поэтому Javascript считает ее «не числом», т.е. NaN. При сравнении числа с NaN Javascript выдает false.

Булевы значения и числа

Для начала сравним булево значение с числом.

Следует знать: при сравнении булевых значений с другими типами данных булево значение всегда преобразуется в число.

Здесь важно запомнить правило: true преобразуется в 1, false в 0.

Фрагмент кода

var x = 1;
var y = true;

if (x == y){
console.log(true);
}
else{
console.log(false);
}

Результат

Булево значение и число

- - - - - - - - - - консоль браузера - - - - - - - - - -

true

Булевы значения и строки

Сравним булево значение со строкой. При этом имеют место два преобразования. Рассмотрим пример и далее пояснения.

Фрагмент кода

var x = "1";
var y = true;

if (x == y){
console.log(true);
}
else{
console.log(false);
}

Результат

Булево значение и строка

- - - - - - - - - - консоль браузера - - - - - - - - - -

true

При сравнении булевых значений со строками преобразование типов в Javascript происходит следующим образом:

  • Шаг 1 - Булево значение «превращается» в число.

  • Шаг 2 - Строка «превращается» в число, либо в NaN.

  • Шаг 3 - Сравнение двух чисел либо числа с «не числом».

По перечисленным выше правилам сравнения и преобразования типов можно правильно определить результат проверки любого равенства.

Ниже рассмотрим еще два варианта равенств, которые могут встречаться и о которых полезно иметь представление.

Сравнение null и undefined. Пустая строка и число

1. Что дает сравнение null и undefined?

2. Каков результат проверки равенства пустой строки и числа?

Комментарии...

  • сравнение null и undefined: хотя это разные значение (об этом здесь), но в сравнении они дают результат true, так как оба «говорят» об одном и том же - «отсутствие значения» (т.е. отсутствующий, не имеющий значения, объект и переменная без значения).

  • Что касается сравнения пустой строки с числом, то первая в процессе преобразования дает 0, который в сравнении с любым числом выдаст false.

Если же сравнивать NaN с null или с undefined, то оба результата ЛОЖНЫ - false, так как NaN, как известно, не равно даже самому себе.

Итак, эта заметка была о том, как при помощи оператора проверки равенства «==» (два знака равно) происходит сравнение различных типов данных в Javascript.



Читайте также...



Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Это нужно знать

Тематические публикации
Популярные заметки
Последние заметки