Где использовать `var` и где` let` в javascript?(НЕ спрашивая разницу) - PullRequest
0 голосов
/ 10 октября 2018

Я прочитал свой блог о VAR и пусть.Я вижу следующее:

var - это функция или переменная глобальной области видимости, зависящая от того, где она определена.

, где

letявляется переменной области видимости блока

Так что во многих статьях я вижу, что они рекомендуют использовать let вместо var.Я понимаю это, потому что это устранило конфликт области видимости переменной.

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

Что я понимаю, так это.

let следует использовать в цикле for, поскольку он создает свою собственную лексическую область видимости.

for(let i =0;i<5;i++){
  setTimeout(function(){
   console.log(i);  
  },100);
}

Так что в этом случае из-за let мы сможем вывести 0,1,2, 3,4, но если бы мы использовали var, то было бы напечатано 5 раз 5.

Кроме того, я хочу узнать ваше предложение о том, что следует использовать в области действия функции и глобальной области видимости?

допустим, у меня есть файл index.js

var first = 1; // what should be used here and why

function function1(){
  var first = 1;  // what should be use here and why `let or var`
  var first1 = 2; // what should be use here and why `let or var`
  for(let i=0;i<2;i++){
    console.log(i);
  }

Кроме того, я заполняю let больше, чем переменную, я создаю свою собственную лексическую область видимости, было бы больше манипуляций под капотом, как при создании IIFE-типавещь.

Насколько я понимаю, мы должны использовать функцию и глобальную область видимости как var и разрешать использовать только как область видимости?Пожалуйста, предоставьте любую рекомендуемую ссылку, которая описывает, что лучше, где и почему?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 10 октября 2018

Очевидно, вы знаете разницу между let и var, и ваш вопрос ГДЕ ИСПОЛЬЗОВАТЬ, ЧТО?

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

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

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

0 голосов
/ 10 октября 2018

Один идентификатор должен использоваться только для представления единой концепции. (Хороший совет по программированию)

const означает, что идентификатор не может быть переназначен .

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

Я использую let, когда мне нужно переназначить переменную.Поскольку я использую одну переменную для представления одной вещи, вариант использования для let имеет тенденцию быть for циклами или математическими алгоритмами .

Я не использую var вES6.В области видимости блока есть значение для циклов, но я не могу вспомнить ситуацию, когда я предпочел бы, чтобы var вместо let.

const - это сигнал, что идентификатор не будет переназначен .

let, является сигналом, что переменная может быть переназначена , например, счетчик в цикле или значение подкачки в алгоритме.Он также сигнализирует о том, что переменная будет использоваться только в блоке , она определена in, которая не всегда содержит всю содержащую функцию.

var теперь самый слабый сигнал доступен при определении переменной в JavaScript.Переменная может или не может быть переназначена , и переменная может или не может использоваться для всей функции , или просто для блока или loop .

Надеюсь, я ответил на ваш вопрос, любая путаница дайте мне знать.

0 голосов
/ 10 октября 2018

let и var

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

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

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

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

0 голосов
/ 10 октября 2018

В настоящее время в большинстве случаев правильно использовать let.

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

Посмотрите на этот код:

for(var i = 0; i < 6; i++) {
  document.getElementById('my-element' + i)
    .addEventListener('click', function() { alert(i) })
}

вопреки этому коду:

for(let i = 0; i < 6; i++) {
  document.getElementById('my-element' + i)
    .addEventListener('click', function() { alert(i) })
}

Первый делает закрытиекоторый ловит i, определенный var, в то время как другой принимает i другие значения.В первом примере каждое оповещение о обратном вызове делается 6, поскольку все они указывают на один и тот же объект.Однако let во втором примере создает новую область видимости блока при каждой итерации.Это решает очень распространенную ловушку в javascript.

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

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

В основном, попробуйте следовать руководству по стилю, которому вы следуете.Если у вас нет специального руководства по стилю, которому вы следуете, попробуйте на AirBnB: https://github.com/airbnb/javascript Здесь упоминается «никогда не используйте var и не используйте let»: https://github.com/airbnb/javascript#variables

...