Пишем код без let в JavaScript | OTUS

Пишем код без let в JavaScript

JS_Deep_22.11-5020-65f9e8.png

Многие знают, что для объявления переменных в JS нежелательно применять ключевое слово var. Но не все знают, что ключевое слово let тоже лучше не использовать. Дело в том, что объявленные с его помощью переменные могут быть переназначены, что усложнит анализ кода. И если вы применяете let, то надо учитывать возможные побочные эффекты. Например, вы можете случайно присвоить переменной неверное значение, что в итоге приведёт к дополнительной трате времени на отладку. А оно вам надо?

Альтернатива let — ключевое слово const. Да, оно тоже не даёт стопроцентную гарантию отсутствия проблем, но упрощает анализ кода и запрещает переназначения. Да и вообще, зачем вам let, если во многих случаях код, который переназначает значения переменных, можно извлечь в отдельную функцию.

Рассмотрим простой пример с let:

let discount;

if (isLoggedIn) {
  if (cartTotal > 100  && !isFriday) {
    discount = 30;
  } else if (!isValuedCustomer) {
    discount = 20;
  } else {
    discount = 10;
  }
} else {
  discount = 0;
}

А теперь то же самое, но с извлечением в функцию:

const getDiscount = ({isLoggedIn, cartTotal, isValuedCustomer}) => {
  if (!isLoggedIn) {
    return 0;
  }

  if (cartTotal > 100  && !isFriday()) {
    return 30;
  }

  if (!isValuedCustomer) {
    return 20;
  }

  return 10;
}

Так просто?

В принципе, да, однако программировать без let может всё равно показаться сложным, но это только поначалу. Зато в результате ваш код выиграет с точки зрения читабельности и станет менее сложным. Да и вообще, благодаря полезной привычке писать код без let, вы станете более дисциплинированным, ведь станете разбивать код на несколько мелких, но зато более управляемых функций. В конечном итоге код выиграет в плане разделения задач, а кодовая база станет более поддерживаемой.

Кстати, вот предлагаемая конфигурация ESLint:

rules:
  fp/no-let: warn

Источник

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
0

Хм.. Интересно. А как написать без let цикл вида for (lit i = 0; i < arr.length; i++) { ... } ?

Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто