Как стать автором
Обновить

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

Многие почему-то используют для преобразования string в number функцию parseInt()

Потому что это явно читается, в отличие от унарного плюса?

Вместо функции Math.floor() для округления числа можно использовать оператор ~~

Тоже ужасный совет. Действительно, зачем использовать функцию, по имени которой понятно, что она делает, лучше использовать хак с битовыми операторами.

более быстрый способ обрезать число с плавающей точкой до целого числа, используя | оператор побитового ИЛИ

Опять-таки. Вам точно нужен этот микроскопический буст в производительности, который можно заметить только при миллионах итераций?

Потому что это явно читается, в отличие от унарного плюса?

Разве в этом проблема? Это вобще разные операции

let i = "1.23"

console.log(+"1.23")
console.log(parseInt(i))

Вывод

1.23
1

Если я использую parseInt то я явно указываю что я хочу получить на выходе. В случае же использования "+" и не корректной строки - я даже не получаю исключение, а просто NaN на выходе.

Поведение у этих операций абсолютно разное. Они вобще для разных целей сделаны.

Сравнил `+` - который работает с Float и Int одновременно, с `parseInt` - который работает по принципу получения целого числа, на примере Float значения. Чел ты гений)

parseFloat?

Действительно, зачем использовать функцию, по имени которой понятно, что она делает, лучше использовать хак с битовыми операторами.

В JS нет целочисленных типов, и соответственно целочисленной арифметики, а писать Math.floor для каждой операции задалбывает.

Метод parseInt может в некоторых случаях сыграть злую шутку, когда на вид всё понятно, но работает совсем не так, например:

['1', '2', '3'].map(parseInt)

тут ведь нюанс не в parseInt, а в таком использовании map

Лишь с теми, кто не знает о том, что у parseInt есть второй параметр radix, или не знает, что map передаёт в колбек три значения.

Преобразование String в Number 

Преобразование значения в Boolean 

Быстрое преобразование Float в Integer 

Всё-таки в коде лучше использовать функции которые понятны. Когда потом это всё будет минимизироваться, вот там уже пусть преобразовывает во что-то другое. Но для разработчика чем понятнее код тем лучше.

Вместо функции Math.floor() для округления числа можно использовать оператор ~~

Только для положительных чисел!

И если число меньше 2147483648

Поразрядные операции сначала приводят к Int32. Потому лучше вообще не использовать этот способ - от греха подальше.

Вся статья выглядит как один большой ниндзя-паттерн

Если бы привели примеры, как использовать "улучшения", было бы много эффективнее подача Вашего материала.

Ну и тернарный оператор, + и ~~ точно не улучшают читабельность кода

Дня отбрасывания дробной части ни floor, ни ceil, ни round не подходят - для этого есть Math.trunc().

О как, внезапно! Спасибо за открытие! Никогда даже не думал об этом нюансе.

А рекламу телеги в начале автор поместил, т.к. боялся, что до конца никто читать не станет?

Возможности js , о которых лучше и не знать.

Мне бы хотелось вообще о js не знать. Но такой привилегии у нас, к сожалению нет. Всегда он где-то вылазит

Почему же? Второе очень сократило код, убрав кучу проверок, а шестое позволило отличать null/undefined от 0. Скажем, написал text = data?.b ?? 'Не найдено' и знаешь, что если в b будет ноль, то он присвоится как ноль, а если b не обнаружится, то будет соответствующая надпись. Удобно, когда нужно вывести что-то с сервера, но сервер может это и не прислать.

Коллеги-фронтендеры, не используйте где попало spread (...) оператор. Если массивы большие и постоянно пересчитываются вашими любимыми фреймворками (и "не фреймворками", а библиотеками))) при каких-либо изменениях, то вы просто уничтожаете память и производительность.

2. Оператор ? для упрощения

Хотелось бы упоминания, что это зовётся Optional chaining, дабы можно было его сгуглить. Ну, и ссылку на MDN. И MDN таки говорит, что оператор имеет вид ?., а не просто ?
В примере использования не хватает использованися с массивами:

a = {x: 10}
a.b[1] ← ошибка
a?.b[1] ← ошибка
a?.b?.[1] ← undefined

6. ?? вместо ||

Хотелось бы упоминания, что это зовётся Nullish coalescing и ссылки на MDN

Многие почему-то используют для преобразования string в number функцию parseInt(), когда можно использовать только оператор +

А я знаю, почему:
s = '100s' // Предположим, это у нас transitionDuration
console.info(parseInt(s))
console.info(+s)
Если уж сравнивать, то с Number(s)

Для преобразования любого значения в Boolean нужно использовать двойной восклицательный знак !!

Не нужно, а можно. По-человечески это всё же Boolean(variable), а !! — это чуть-чуть из области минификации кода, примерно как if (a) run() заменять на a && run()

13. document.designMode 

Если это упомянули (я ещё на IE использовал, если память не врёт), тогда нужно было написать и про contentEditable, который можно применять к отдельным тегам

Спасибо за комментарий!

Из приведенных примеров не видна разница между использованием операторов ~~ и |. Выражения ниже приводят к одному результату.

20.8 | 0
~~20.8

НЛО прилетело и опубликовало эту надпись здесь
array.length = 4;

Однажды я так сделал и в лисе и сафари на этом месте код падал. Это было давно и возможно сейчас это работает на всех движках, но я больше так не делаю никогда.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории