delphinpro
@delphinpro
frontend developer

Почему babel использует метод concat() вместо оператора «+»?

Почему babel использует метод concat() вместо оператора "+" при преобразовании шаблонных строк?

var v = 12;
...
// Исходная строка
var result = `str1${v}str2${v}str3`;

// Выходной код
var result='str1'.concat(v,'str2').concat(v,'str3');

// Ожидаемый код
var result='str1'+v+'str2'+v+'str3';


Причем, если бы хотя бы было так, и то было бы короче:
var result='str1'.concat(v,'str2',v,'str3');

Это происходит при следующем наборе (т.е. последние версии):
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"gulp-babel": "^8.0.0",


Babel 6, например, использует оператор «+».
Вот и возник вопрос: а почему? Это баг или есть какой-то скрытый от меня смысл?
  • Вопрос задан
  • 889 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
...или есть какой-то скрытый от меня смысл?

Есть:

It will handle cases with Symbol.toPrimitive correctly and throw correctly if template literal expression is a Symbol(). See babel/babel#5791.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы