Разница между String() и + ''

96
07 марта 2021, 15:20

Есть ли разница между преобразованиями в строку:

let a = 5;
let b = a + '';
let c = String(a);
Answer 1

В приведённом примере - нет. Вообще, я предпочитаю сложение со строкой - оно короче, нагляднее и работает быстрее. Кстати, есть ещё третий вариант - вызов метода toString, но он будет падать, если в переменной окажется null или undefined.

А вообще, разница может быть, например, с типом данных symbol:

var num = 12345 
console.log(String(num)) 
console.log(num.toString()) 
console.log(num + "") 
 
var sym = Symbol("smth") 
console.log(String(sym)) 
console.log(sym.toString()) 
console.log(sym + "")
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

Answer 2

Немного спецификации:

  1. В случае сложения с пустой строкой, для операнда вызывается абстрактная функция ToString
  2. В случае использования String, без оператора new, если тип параметра Symbol, то вызовется функция SymbolDescriptiveString, в противном случае будет вызвана та же самая ToString.

Таким образом можно заключить, что разница будет видна только если аргументом будет объект Symbol.

READ ALSO
Где в Google Sheets писать скрипт?

Где в Google Sheets писать скрипт?

Где в google sheets писать скрипт, который мог работать с ячейками, изменять данные и тп

122
Не работает import после транспиляции JSX в JS (ES6) [дубликат]

Не работает import после транспиляции JSX в JS (ES6) [дубликат]

Начал изучать React параллельно с JSВ своем коде использую препроцессор JSX

125