Ответ 1
return
не может иметь LineTerminator
после этого:
return
{
};
рассматривается как return;
(return undefined
) вместо return {};
(возвращает объект)
Подробнее см. правила Automatic Semicolon Insertion (ASI)
.
Я не могу вспомнить, где, но недавно я передал комментарий, где пользователь сказал, что 1TBS более предпочтителен, чем Allman в JavaScript, и сказал, что Allman имеет опасные последствия для JavaScript.
Было ли это действительным выражением? Если да, то почему?
return
не может иметь LineTerminator
после этого:
return
{
};
рассматривается как return;
(return undefined
) вместо return {};
(возвращает объект)
Подробнее см. правила Automatic Semicolon Insertion (ASI)
.
Это действительное утверждение.
Поскольку JavaScript-движки имеют то, что называется ASI (Automatic Semicolon Insertion), которое вставляет точку с запятой, если необходимо, при возвратах строк. "При необходимости" является двусмысленным; иногда это работает, а иногда нет. См. правила.
Итак, как сказано в других ответах:
return
{
};
// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};
Поэтому он не рекомендуется для операторов return
.
Однако, если ваши рекомендации рекомендуют стиль Allman для объявлений функций, это отлично. Я знаю некоторых, которые делают.
Я думаю, это зависит от заявления. Например, оператор возврата может быть сломан, если открытие скобки находится на новой строке. Дополнительная информация здесь.
return {
a: "A",
b: "B"
};
// vs.
return // Semicolon automatically inserted here! Uh oh!
{
a: "A",
b: "B"
}