Недавно я написал много кода ES6 для io.js. В дикой природе не так уж много полезного, поэтому я чувствую, что по ходу дела определяю свои собственные соглашения.
Мой вопрос о том, когда использовать const
против let
.
Я применяю это правило: если возможно, используйте const
. Используйте только let
если вы знаете, что его значение необходимо изменить. (Вы всегда можете вернуться и изменить a const
на a, let
если позже выяснится, что вам нужно изменить его значение.)
Основная причина этого правила - его легко применять последовательно. Там нет серых зон.
Дело в том, что когда я применяю это правило, на практике это 95% моих заявлений const
. И это выглядит странно для меня. Я использую только let
для таких вещей, как i
в for
цикле, или иногда для таких вещей, как накопленные итоги Фибоначчи (что не так уж и много в реальной жизни). Я был удивлен этим - оказывается, 95% «переменных» в моем коде ES5 на сегодняшний день были для значений, которые не меняются. Но, видя const
весь мой код, я чувствую что-то не так.
Итак, мой вопрос: нормально ли это использовать const
? Должен ли я действительно делать такие вещи, как const foo = function () {...};
?
Или я должен зарезервировать const
для тех ситуаций, когда вы жестко кодируете литерал в верхней части модуля - как вы делаете в полных заглавных буквах, как const MARGIN_WIDTH = 410;
?
function foo() {...}
лучше, чем<anything> foo = function() {...}
function foo() {...}
может вызвать незначительную путаницу при отладке из-за подъема. Кроме того, его существование означает, что у нас есть две конструкции, которые делают одно и то же, но одна из них работает только в очень специфическом контексте. (Вы можете использовать выражение функции везде, где может существовать выражение, но вы можете использовать только объявление функции на уровне оператора.) Если вы предпочитаете краткость, проблема может заключаться просто в том, что синтаксис выражения функции использует целое слово function
.
const
это много.