Лучший способ разобрать int в Javascript

Можно преобразовать строку в целое число различными способами, например

  • parseInt("-1",10)
  • Math.floor("-1")
  • Number("-1")
  • "-1"|0
  • ~~"-1"

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

Каковы различия и преимущества использования каждого из них? Что, как ожидается, будет самым быстрым?

Ответ 1

Канонический способ разбора десятичного числа int parseInt(str, 10).

Что касается других решений:

  • parseInt("-1"): используйте его, только если вам нравится жить опасно (некоторые браузеры предполагают, что "009" является десятичным, а не все)
  • Math.floor("-1"): это может быть слово, а не int, но это не так, если вы хотите убедиться, что это целое число
  • Number("-1"): возможно, вам нужен объект, чтобы вы могли вызывать методы без рекламы, и вы хотите убедиться, что нет мусора (Number('3 flowers') == > NaN)
  • "-1"|0, ~~"-1" и другие комбинации неявного преобразования и двоичной операции: вам нравится код в гольф и не хотите, чтобы ваш код был легко поддержан (для тех, кто задается вопросом: двоичная операция принимает целую часть числа). Как отметил Блендер в комментарии, эти решения не подходят для больших (положительных или отрицательных) номеров.

Вам не следует использовать другое решение, кроме parseInt(str,10), если вам не нужно, чтобы строка содержала только что int. Это самое быстрое решение и, что более важно, наиболее читаемое. Если JS-движок выполняет некоторую оптимизацию, нет никаких оснований для того, чтобы другие решения стали быстрее, чем этот.

Ответ 2

Как насчет унарного плюса? Он выглядит как специально разработанный для преобразования типов.

+"-1" // -1