Нещодавно я писав багато кодів ES6 для io.js. У дикій природі не так багато коду, чому можна навчитися, тому я відчуваю, що я визначаю свої власні умовності, коли я йду.
Моє питання про те, коли використовувати const
проти let
.
Я застосовував це правило: Якщо можливо, використовуйте const
. Використовуйте лише let
якщо ви знаєте, що його значення потрібно змінити. (Ви завжди можете повернутися назад і змінити 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
це багато.