Почему следует использовать «var» вместо «let»?

Большинство программистов говорят, что "let" следует использовать всегда, поэтому возникает вопрос: есть ли причина продолжать использовать var или это просто полностью "не рекомендуется"?

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

John Montgomery 14.08.2018 03:07

Я бы сказал наоборот. Как правило, используйте var, потому что он не нарушает совместимость. Если вы знаете, что делаете, используйте let.

Ibu 14.08.2018 03:08
Как исправить циклическую зависимость этого модуля ES6? может быть одним случаем.
Sebastian Simon 14.08.2018 03:10

Я бы добавил следующее: Как правило, используйте var или let, только если вы точно знаете, что делаете =)

Mathiasfc 14.08.2018 03:13

Переменные позволять обычно используются, когда есть ограниченное использование этих переменных. Например, несинхронизированные данные могут быть изменены во время ожидания. Если вы используете позволять, это может заблокировать ваши данные. Это хорошо для тебя. Разница между let и var в Javascript

Phineas Huang 14.08.2018 03:23

@lbu Я не согласен. Если вы по умолчанию используете вар, вы потратите половину своего времени на отладку кода, пытаясь понять, почему Икс = у, если вы не назначили Икс в текущей функции. Отладить ошибку (ошибка неназначенной переменной) проще, чем неожиданно «добавить» функционал.

NotoriousPyro 14.08.2018 10:24

@ Ибу Я тоже не согласен. Вы говорите себе: «Если вы знаете, что делаете, используйте позволять»: это означает, что вы можете продолжать использовать вар, когда не знаете, что делаете. У меня эта проблема каждый день с моими учениками. Использование вар открывает дверь к плохому кодированию, что приводит к нестабильному коду.

allez l'OM 02.12.2019 11:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
232
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Например, вы можете написать

for (let city of cities) {
    console.info(city.name + city.state + city.areacode);
}

Но, возможно, вы захотите не писать город. каждый раз - потому что, хотя этот цикл for не делает сейчас слишком много, в будущем вы захотите гораздо больше в нем! Итак, в этом случае вы бы сделали:

for (let city of cities) {
    let cname = city.name;
    let cstate = city.state;
    let carea = city.areacode;
    console.info(cname + cstate + carea);
}

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

Что касается объема переменной:

people = ["Frank", "Tina"];
for (let p of people) {
    console.info(p);
} 
console.info(p);

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

вар чрезвычайно полезен, если вы хотите назначить область видимости переменной, которую может видеть все. Это полезно, например, для назначения URL-адреса для получения данных json, а затем изменения этого URL-адреса на лету ... Таким образом, все ваши другие функции всегда обращаются к одним и тем же данным, а не вызывают функцию для их получения каждый раз. Они полезны, если вы, возможно, захотите отслеживать элемент, объект и т.п. с помощью нескольких различных функций.

people = ["Frank", "Tina"];
for (var p of people) {
    console.info(p);
} 
console.info(p);

Это покажет оба имени, но дважды фамилию.

const аналогичен вар, но не может быть изменен после назначения.

Массовое присвоение переменных возможно с const и let

jhpratt 14.08.2018 03:16

Я никогда не говорил, что это не так.

NotoriousPyro 14.08.2018 03:25

Ваш пример с вар демонстрирует прямо противоположное: если вы хотите, чтобы п находился во внешней области, вы должны объявить ее во внешней области. Если вы этого не сделаете, вы подготовите себя или пользователей своего кода к предстоящим проблемам ... именно в том, в чем люди упрекают JavaScript. Решение - запретить использование вар (с новым кодом).

allez l'OM 02.12.2019 10:54

Другие вопросы по теме