Каков идиоматический способ выполнить “целочисленное” преобразование/преобразование типа в JavaScript?

Другой вопрос, который спрашивают о значении фрагмента кода a >>> 0 в JavaScript. Оказывается, что это - умный способ гарантировать, что переменная является неподписанным 32-разрядным целым числом.

Это круто, но мне не нравится он по двум причинам.

  • Намерение выражения не ясно, по крайней мере, не мне.
  • Это не работает на отрицательные числа

Это приводит меня спрашивать: Каков самый идиоматический способ преобразовать произвольное значение в "целое число" в JavaScript? Это должно работать на целые числа со знаком, не только неотрицательные числа. Случаи, где это повреждается вследствие того, что целые числа являются просто плаваниями, скрытыми в JavaScript, приемлемы, но должны быть подтверждены. Это не должно возвращаться undefined или NaN в любом случае (это не целые числа), но возврат 0 для нечисловых значений.

6
задан Community 23 May 2017 в 12:31
поделиться

1 ответ

parseInt - это «самый идиоматический» способ, поскольку он точно описывает то, что вы от него хотите. Недостатком parseInt является то, что он возвращает NaN , если вы вводите нечисловую строку.

Другой метод - это поразрядное ИЛИ на 0 ( | 0 ), который также работает для отрицательных чисел. Более того, он возвращает 0 при использовании его в нечисловой строке. Другое преимущество состоит в том, что он немного быстрее, чем parseInt при использовании его с действительными числами; он медленнее при подаче струн.

  • 12,4 | 0 выходы 12
  • -12,4 | 0 выводит -12
  • «12,4» | 0 выводит 12
  • «не число» | 0 выходы 0
4
ответ дан 17 December 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: