Всякие полезные мелочи, о которых все забывают
Бинарный + возвращает строку, если хотя бы один из операндов строка или объект.
alert('1' + 2); //12 alert(2 + '1'); //21
Бинарное *, /, − возвращает число.
alert('2' * 2); //4 alert('2' / '2'); //1 alert(2 − '2'); //0
Унарный + переводит в число.
alert('2' + '3'); //'23' //бинарный плюс складывает строки alert(+'2' + '3'); //'23' //второй операнд — всё ещё строка alert(+'2' + +'3'); //число 5. оба операнда преобразованы в числа
Арифметический оператор %. a % b — это остаток от деления a на b.
alert(5 % 2); //остаток от деления 5 на 2. получится 1
Оператор || ИЛИ возвращает то значение, на котором остановились вычисления.
alert(1 || 0); //1 alert(true || 'неважно что'); //true alert(null || 1); //1 alert(undefined || 0); //0
Оператор && И возвращает следующее значение после true.
//Первый аргумент — true, поэтому возвращается второй alert(1 && 0); //0 alert(1 && 5); //5
Приоритет оператора И && больше, чем ИЛИ ||,
т. е. он выполняется раньше.alert(5 || 1 && 0); //5
Оператор ! НЕ сначала приводит аргумент к логическому типу true/false. Затем возвращает противоположное значение.
alert(!true); //false alert(!0); //true
Двойное !! НЕ используются для преобразования значений к логическому типу.
alert(!!"строка"); //true alert(!!null); //false
Мягкое преобразование в число с parseInt и parseFloat.
alert(parseInt('12px') ); //12 alert(parseFloat('12.34px') ); //12.34
Значение NaN можно проверить специальной функцией isNaN(n), которая возвращает true если аргумент — NaN и false для любого другого значения.
var n = 0 / 0; alert(isNaN(n)); //true
Функция isFinite(n) возвращает true только тогда, когда n — обычное число.
alert(isFinite(1) ); //true alert(isFinite(Infinity)); //false alert(isFinite(NaN) ); //false