1-) Переменные var относятся к глобальной области видимости, когда вы определяете их вне функции. эта переменная добавляется к глобальным объектам как свойства. глобальный объект — window для браузера, global для платформы nodejs.
как вы видите, счетчик был привязан к объекту окна
var counter;
console.log(window.counter); // 0
однако переменная «let» не добавляется к глобальным объектам
var counter;
console.log(window.counter); //
undefined
2-) когда вы объявляете переменную с помощью varkeyword внутри функции, она недоступна снаружи этой функции.
function increase() { var counter = 10; } // cannot access the counter variable here
3-) в приведенном ниже примере отображаются числа от 0 до 4 и число 5 вне цикла. (я выделил изменение, которое я сделал в цикле)
for (var i = 0; i < 5; i++) {
console.log("Inside the loop:", i);
}
console.log("Outside the loop:", i);
Выход:
Inside the loop: 5 Inside the loop: 5 Inside the loop: 5 Inside the loop: 5 Inside the loop: 5 Outside the loop: 5
причина в том, что переменная «i» объявлена с использованием ключевого слова var. Она рассматривается как глобальная переменная и может быть доступна как внутри, так и вне цикла. поэтому будьте осторожны при объявлении переменной через ключевое слово var.
4-)если бы мы определили переменную с помощью ключевого слова «let». переменная «i» не может быть доступна снаружи цикла. это означает, что переменная «i» существует только внутри цикла
for (let i = 0; i < 5; i++) {
console.log("Inside the loop:", i);
}
console.log("Outside the loop:", i);
будет выброшена ошибка в случае, если «i» вызывается вне цикла
Inside the loop: 0
Inside the loop: 1
Inside the loop: 2
Inside the loop: 3
Inside the loop: 4
Uncaught ReferenceError: i is not defined
Ключевое слово «var» позволяет без проблем повторно объявить переменную. даже в этом случае, пожалуйста, не пытайтесь это сделать.
var counter = 10; var counter; console.log(counter); // 10
Однако если вы повторно объявите переменную с ключевым словом let
, вы получите сообщение об ошибке:
let counter = 10; let counter; // error
Ресурс, который я использовал;
https://www.javascripttutorial.net/es6/difference-between-var-and-let/