Another question спросил о значении кода фрагмента a >>> 0
в Javascript. Оказывается, это умный способ гарантировать, что переменная представляет собой 32-битное целое число без знака.Что такое идиоматический способ выполнения «целочисленного» преобразования/typecast в javascript?
Это довольно аккуратно, но мне это не нравится по двум причинам.
- Цель выражения не ясна, по крайней мере, не для меня.
- Это не работает для отрицательных чисел
Это заставляет меня спросить: Что является наиболее идиоматическим способом преобразования произвольного значения на «целое» в JavaScript? Он должен работать для целых целых чисел, а не только неотрицательных чисел. Случаи, когда это прерывается из-за того, что целые числа являются просто плавающими в маскировке в Javascript, являются приемлемыми, но должны быть подтверждены. Он не должен возвращать undefined
или NaN
в любом случае (это не целые числа), но возвращает 0
для нечисловых значений.
Это не делает именно то, что я хочу. 'parseInt (" not int, damnit ")' возвращает 'NaN'. – fmark
@fmark: Скорректированный ответ. –
Знак '| 0', который он упомянул, действительно работает очень хорошо: строки равны 0,' true' равно 1, '28.3' равно 28,' -28.3' -28, NaN (как, например, '(+" foo «) | 0') равно 0,' undefined' равно 0. Я что-то пропустил? – Amadan