Выражение vs const называется условием

Обновлено: 21.11.2024

Привет, Хабр! Представляю вашему вниманию перевод статьи «On let vs const» автора Дэна Абрамова.

Мой предыдущий пост содержит такой параграф:

let vs const vs var: Обычно, все что вам нужно, — это let. Если вам нужно запретить перезаписывание переменной, вы можете использовать const. (Некоторые очень педантичны по этому поводу и предпочитают использовать const, когда бывает только одно назначение переменной).

Это утверждение оказалось очень спорным, на Twitter'e и Reddit'e сразу же начались жаркие обсуждения по этому поводу. Похоже наиболее популярное мнение (или по крайней мере, устно высказанное большинством) это то, что следует всегда использовать const и обращаться к let только при необходимости, что может быть обеспечено ESLint правилом prefer-const.

В этом посте я коротко перечислю все за и против, которые я встретил, и выскажу свое личное мнение по этому поводу.

Почему предпочитают const

  • Четкое правило: Это лишняя нагрузка для мозга, когда вам приходится каждый раз думать, использовать const или же лучше будет let. Правило «Всегда используй const, где это работает» освобождает вас от лишней мороки и оставляет эту задачу для линтера.
  • Переназначения могут стать причиной багов: В больших функциях бывает так, что вы можете не заметить, если переменная переназначится, и это может оказаться причиной багов. Особенно в замыканиях. Const дает вам уверенность в том, что вы всегда будете видеть одно и то же значение.
  • Понимание мутации: Те, кто только начинает изучать JavaScript, могут неправильно понять принцип работы const, думая что он предотвращает мутацию переменной. Важно понять разницу между мутацией переменной и ее переназначением. Использование const принуждает вас понять и противостоять этому различию на ранней стадии.
  • Бессмысленные переназначения: Иногда переназначение переменной не имеет смысла вообще. Например, в React Hooks, значения, которые вы получаете из хука — как useState — больше похожи на параметры. Они идут в одном направлении. Видя ошибку при их назначении, вы раньше узнаете о потоке данных React'а.
  • Преимущества исполнения: Есть также редкие заявления о том, что движок JavaScript'а может быстрее исполнять код, где используется const, так как знает, что переменная не может быть перезаписана.

Почему не предпочитают const

  • Const теряет свой смысл: Если мы везде будем использовать const, мы потеряем способность понимать, было ли это важно, чтобы что-то не было переназначено.
  • Конфуз с иммутабельностью: В каждой дискуссии, где говорят, что нужно всегда использовать const, находятся те, кто путается в вопросе иммутабельности. Это неудивительно, так как обе операции (объявление и переназначение) используют один оператор " javascript">const a = cond ? b : c

Мое мнение

Я могу использовать любое правило которое используют другие.

Если вам не все равно, используйте линтер, который автоматизирует проверку и исправление, меняя let на const, так что это не потратит ваше время в дальнейшем ревью кода.

И последнее, помните, что линтеры созданы для облегчения разработки. Если какое либо правило докучает вам или вашей команде, просто уберите его. Это будет лучше всего. Учитесь на своих ошибках.

Читайте также: