Реальность такова, что большинство новых разработчиков, которые впервые изучают JavaScript, будут лучше осведомлены о let и const, но, возможно, никогда не имели формального представления или не понимали, почему это так (особенно при чтении документов и старых руководств). . Для многих разработчиков, которые использовали JavaScript в начале своей карьеры и возвращаются, взгляд на изменения ES2015 может быть очень запутанным.

Основное различие между var, let и const заключается в их повторном объявлении или обновлении. const нельзя обновить или повторно объявить, let можно обновить, но нельзя повторно объявить, а var можно и повторно объявить, и обновить.

Если вы привыкли писать на JavaScript, различия в этих трех объявлениях могут иметь смысл, однако во многих ситуациях молодые разработчики часто затрудняются определить, когда использовать каждое из них.

Когда использовать const

Когда дело доходит до трех объявлений, const действительно выделяется среди двух других. Почему это? Это потому, что почти во всех ситуациях вы не можете изменить значение или повторно объявить его после того, как оно было объявлено.

Общее эмпирическое правило: сначала всегда используйте const*, а если вам нужно обновить значение позже, вы можете переключиться на let или var по мере необходимости. Это помогает сделать код максимально понятным при написании и чтении.

*Обратите внимание, что это личное предпочтение, которое до сих пор широко обсуждается, хотя тенденция склоняется именно в эту сторону.

Хотя в этой статье слишком много рассказывать обо всех вариантах использования const , вот очень распространенный и простой пример, где const будет правильным выбором.

const pi = 3.14159265359

Вы никогда не захотите, чтобы значение числа Пи менялось (по крайней мере, в этой вселенной), поэтому const было бы очевидным выбором для этого объявления.

Использование const для объектов и массивов

Именно здесь вы начинаете по-настоящему видеть гибкость const. В то время как с объявлениями одной переменной const является жесткой, она открывает многое и приобретает больше смысла, когда вы начинаете создавать объекты и массивы.

При использовании const с объектами и массивами переменная в целом не может измениться (т. е. вы не можете назначить переменной новый объект или массив), но вы можете манипулировать текущим массивом или значениями.

Это сложно описать словами, поэтому вот примеры манипулирования объектами и массивами, объявленными с помощью const.

Управление объектами, объявленными с помощью const

Чтобы показать, как это работает, давайте создадим новый объект, используя const, и посмотрим, что работает.

const jedsCar = { 
     make: "Honda", 
     model: "Accord", 
     color: "Green"
}

Теперь у нас есть объект для представления автомобиля, который нельзя повторно объявить. Но, скажем, я отдал эту машину на покраску, и теперь у меня фиолетовая машина. Вот что мы можем сделать:

jedsCar.color = "Purple";

теперь, если мы посмотрим на jedsCar, мы увидим такой объект:

{ 
     make: "Honda", 
     model: "Accord", 
     color: "Purple"
}

и на этом все! Теперь вы можете объявить объект с помощью const, в который все еще могут быть помещены новые значения!

Управление массивами, объявленными с помощью const

Подобно объектам, массивами также можно манипулировать, если они объявлены с помощью const. Я буду короче:

const favoriteNums = [3, 7, 19, 27, 72];
favoriteNumes.push(12);
// [3, 7, 19, 27, 72, 12]

Когда использовать let и var

Теперь, когда я рассмотрел основы использования const, я хочу обратить внимание на let и var. Если вы не можете (или не используете) использовать const для своей декларации, вам придется выбирать между одним из этих вариантов.

Хотя неортодоксально и неправильно делать полные заявления о том, что должно быть сделано как «лучшее» в процессе разработки, вы обнаружите, что общее мнение состоит в том, чтобы использовать let все время между ними.

Почему это?

Концепция let исходит из места исправления ошибок, которые могли произойти с var. Использование let поможет вам сохранить область действия блока, позволяя переменным с одним и тем же именем работать, пока они находятся в разных областях, и не позволяя им работать в одной области.

Это может избавить вас от головной боли, особенно на раннем этапе обучения, связанной со случайным переобъявлением переменной. Вот статья, в которой более подробно рассматривается, почему вам никогда не нужно использовать var, и вы должны придерживаться let.

Вывод

Есть много вещей, которые нужно обсудить по этой теме, но для тех, кто только изучает различия переменных, это должно помочь прояснить, когда использовать каждую из них. По моему мнению (и по мнению многих более умных людей, чем я), имеет смысл использовать const как можно чаще, а все остальное время использовать let. Объявление var, хотя и работает, больше не является необходимой частью JavaScript в ES2015 и более поздних версиях.