Публикации - Базовый синтаксис JavaScript

Автоматическое определение типов данных

JavaScript автоматически определяет тип данных. Иногда это приводит к непредвиденным последствиям:

Сложение числа с булевым значением:

1+true; //2

При сложении строки с числом, JavaScript отдает предпочтение строке:

Сложение числа со строкой:

“2”+3; // 23

Для сравнения значений на равенство либо не равенство между собой используются операторы == (двойное равно) или === (тройное равно).

Оператор == сравнивает два значения без учета типов значений. Оператор === сравнивает два значения с учетом типов каждого значения. Если два аргумента относятся к одному типу, между ними нет никакой разницы. Тем не менее, стоит избегать использования оператора со смешанными типами (==). Сравнение двойным равно может привести к неожиданным результатам. Например, код из следующего листинга вернет true:

Сравнение аргументов двойным равно, которое вернет true:

“1.0e0” == { valueOf: function(){return true;} }

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

Переменная, значением которой окажется null, не вызывает сбоя при арифметическом вычислении, она будет преобразована в 0.

Неопределенная переменная преобразуется в специальное значение с плавающей точкой NaN. Причем, NaN рассматривается как неравное самому себе.

Проверка значения на равенство NaN не работает:

var x = NaN 
x === NaN; //false

Протестировать переменную на значение NaN можно путем проверки ее на неравенство самой себе:

Тестирование переменной на значение NaN:

var x = NaN 
x !== x; // true

Можно создать специальную функцию:

Функция тестирования переменной на значение NaN:

function isNaN(x){ 
 return x !== x; 
}

Еще одна разновидность приведения типов данных называется истинностью. Операторы if, ||, && работают с булевыми значениями, но на самом деле принимают любые. Большинство значений JavaScript являются истинными, т.е. неявным образом приводятся к true. Существует лишь 7 ложных значений:

 false, 0, -0, “”, NaN и undefined

Все остальные значения истинны.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться


Изображения Видео

1. JavaScript в Web-дизайне В. Дронов. - М.: СПб: БХВ, 2014. - 880 c.
3. JavaScript для всех А.Г. Федоров. - М.: Машиностроение, 2012. - 384 c.