Пишем код без let в JavaScript
Многие знают, что для объявления переменных в JS нежелательно применять ключевое слово var. Но не все знают, что ключевое слово 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