Всякие полезные мелочи, о которых все забывают

  1. Бинарный + возвращает строку, если хотя бы один из операндов строка или объект.

    alert('1' + 2); //12
    alert(2 + '1'); //21
    
  2. Бинарное *, /, − возвращает число.

    alert('2' * 2); //4
    alert('2' / '2'); //1
    alert(2'2'); //0
    
  3. Унарный + переводит в число.

    alert('2' + '3'); //'23' //бинарный плюс складывает строки
    alert(+'2' + '3'); //'23' //второй операнд — всё ещё строка
    alert(+'2' + +'3'); //число 5. оба операнда преобразованы в числа
    
  4. Арифметический оператор %. a % b — это остаток от деления a на b.

    alert(5 % 2); //остаток от деления 5 на 2. получится 1
    
  5. Оператор || ИЛИ возвращает то значение, на котором остановились вычисления.

    alert(1 || 0); //1
    alert(true || 'неважно что'); //true
    alert(null || 1); //1
    alert(undefined || 0); //0
    
  6. Оператор && И возвращает следующее значение после true.

    //Первый аргумент — true, поэтому возвращается второй
    alert(1 && 0); //0
    alert(1 && 5); //5
    
  7. Приоритет оператора И && больше, чем ИЛИ ||, т. е. он выполняется раньше.

    alert(5 || 1 && 0); //5
    
  8. Оператор ! НЕ сначала приводит аргумент к логическому типу true/false. Затем возвращает противоположное значение.

    alert(!true); //false
    alert(!0);  //true
    
  9. Двойное !! НЕ используются для преобразования значений к логическому типу.

    alert(!!"строка"); //true
    alert(!!null); //false
    
  10. Мягкое преобразование в число с parseInt и parseFloat.

    alert(parseInt('12px') ); //12
    alert(parseFloat('12.34px') ); //12.34
    
  11. Значение NaN можно проверить специальной функцией isNaN(n), которая возвращает true если аргумент — NaN и false для любого другого значения.

    var n = 0 / 0;
    alert(isNaN(n)); //true
    
  12. Функция isFinite(n) возвращает true только тогда, когда n — обычное число.

    alert(isFinite(1) ); //true
    alert(isFinite(Infinity)); //false
    alert(isFinite(NaN) ); //false