Каков наилучший способ преобразования числа в строку в JavaScript?

Каков наилучший способ coString (n) переместить число в строку (с точки зрения скорости, преимущества ясности, преимущества памяти и т. Д.)?

Некоторые примеры:

  1. n.toString()

  2. ""+n

  3. n+""

  4. var foo = 45; var bar = '' + foo;

javascript,string,performance,coding-style,numbers,

338

Ответов: 19


367 принят

как это:

.toString()

На самом деле, хотя я обычно делаю это так просто для удобства, более 1000 итераций, которые появляются для сырой скорости, есть преимущество дляstr = num.toString();

См. Тесты производительности здесь (не я, но нашел, когда я пошел писать самостоятельно): http://jsben.ch/#/ghQYR

Самый быстрый результат теста JSPerf выше: num + ''

Следует отметить, что разница в скорости не слишком значительна, если учесть, что она может сделать преобразование любым способом 1 миллион раз за 0,1 секунды .

Обновление: скорость, похоже, сильно отличается браузером. В Chrome, .toString()как представляется, быстрее всего на основе этого теста http://jsben.ch/#/ghQYR

Обновление 2: опять же, исходя из моего теста выше, следует отметить, что Firefox 20.0.1 выполняет '' + numпримерно в 100 раз медленнее, чем n.toString()образец.


По-моему, он n.toString()получает приз за его ясность, и я не думаю, что он несет дополнительные накладные расходы.


Явные преобразования очень понятны тем, кто новичок в этом языке. Использование принуждения типа, как предполагали другие, приводит к двусмысленности, если разработчику не известно о правилах принуждения. В конечном счете, время разработки более дорогое, чем процессорное время, поэтому я бы оптимизировал его раньше за счет последних. При этом разница в этом случае, вероятно, незначительна, но если нет, то я уверен, что есть некоторые достойные компрессоры JavaScript, которые будут оптимизировать такие вещи.

Итак, по вышеуказанным причинам я бы пошел: String(n)или String(n). nвероятно, лучший выбор, потому что он не будет терпеть неудачу, если он nимеет значение null или undefined.


2..toString(); // the second point is correctly recognized
2 .toString(); // note the space left to the dot
(2).toString(); // 2 is evaluated first

Источник


10

Самый простой способ преобразования любой переменной в строку - это добавить пустую строку к этой переменной.

5.41 + ''    // Result: the string '5.41'
Math.PI + '' // Result: the string '3.141592653589793'
JavaScript, строка, производительность кодирования стиль, номер,
Похожие вопросы