В CoffeeScript следующий оператор оценивает оператор JavaScript, который содержит префикс пустой строки.Почему интерполяция строк в стиле CoffeeScript префикс выражения с пустой строкой?
Я чувствую, что есть крайный кейс, касающийся типа безопасности, но я не могу думать об этом с головы. В каком случае префикс имеет значение?
CoffeeScript:
x = "#{foo} bar"
JavaScript:
x = "" + foo + " bar";
Я не 100% уверен, но стоит отметить, что это немного кода, который я пробовал: '{а:«у»} +« что „' => NaN но '“» + {a: 'y'} + "thing" '=> " [объект Object] вещь ". Поэтому я предполагаю, что объединение объекта в пустую строку вызывает 'toString' объекта перед конкатенацией – Brennan
Он рассматривает шаги 7 и 8 [' '' '' '' '' оператора] (http://ecma-international.org/ecma- 262/5.1/# сек-11.6.1) и обеспечивает конкатенацию (7) по сравнению с добавлением (8). Надуманным примером является '' # {3} # {4} "'. С пустой строкой в начале выражения ('" "+ 3 + 4'), это приводит к' '34" '. Без него ('3 + 4') результатом будет' 7'. –
@Brennan: Нет. Вы стали жертвой '{a: 'y';}', являющегося блочным синтаксисом (см. [Эти] (http://stackoverflow.com/q/14115902/1048572) [вопросы] (http: /stackoverflow.com/q/17268468/1048572)). Попробуйте '({a: 'y'}) +" вещь "' – Bergi