Skip to content

Instantly share code, notes, and snippets.

@escaroda
Last active August 26, 2018 13:40
Show Gist options
  • Save escaroda/8f5eab51c6535a617263a06d0bead98e to your computer and use it in GitHub Desktop.
Save escaroda/8f5eab51c6535a617263a06d0bead98e to your computer and use it in GitHub Desktop.
( 3|0 ) === 3; // целые числа не изменяет
( 3.3|0 ) === 3; // у дробных чисел отбрасывает дробную часть
( 3.8|0 ) === 3; // не округляет, а именно отбрасывает дробную часть
( -3.3|0 ) === -3; // в том числе и у отрицательных дробных чисел
( -3.8|0 ) === -3; // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3; // строки с числами преобразуются к целым числам
( "3.8"|0 ) === 3; // при этом опять же отбрасывается дробная часть
( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
( NaN|0 ) === 0; // NaN приводится к нулю
( Infinity|0 ) === 0; // приведение к нулю происходит и с бесконечностью,
( -Infinity|0 ) === 0; // и с минус бесконечностью,
( null|0 ) === 0; // и с null,
( (void 0)|0 ) === 0; // и с undefined,
( []|0 ) === 0; // и с пустым массивом,
( [3]|0 ) === 3; // но массив с одним числом приводится к числу,
( [-3.8]|0 ) === -3; // в том числе с отбрасыванием дробной части,
( [" -3.8 "]|0 ) === -3; // и в том числе с извлечением чисел из строк,
( [-3.8, 22]|0 ) === 0 // но массив с несколькими числами вновь зануляется
( {}|0 ) === 0; // к нулю также приводится пустой объект
( {'2':'3'}|0 ) === 0; // или не пустой
( (function(){})|0 ) === 0; // к нулю также приводится пустая функция
( (function(){ return 3;})|0 ) === 0;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment