У цьому посібнику ви дізнаєтесь про різницю між let і var у JavaScript за допомогою прикладів.
У JavaScript обидва ключові слова var
та let
використовуються для оголошення змінних.
let
Ключове слово було введено в пізніших версіях JavaScript , відомої як ES6 (ES2015) . І це найкращий спосіб оголошення змінних.
JavaScript дозволяє Vs var
Ось огляд відмінностей між let
і var
.
дозволяти | змінний |
---|---|
нехай має блок-сферу дії. | var - це область дії функції. |
let не дозволяє повторно оголошувати змінні. | var дозволяє повторно оголосити змінні. |
Підйом не відбувається в let. | Піднімання відбувається в var. |
JavaScript дозволяє Vs var у Local Scope
var - це область дії функції
Змінна, оголошена всередині функції, var
може бути використана в будь-якому місці функції. Наприклад,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
У наведеній вище програмі змінна a оголошена за допомогою var
. Змінна a може використовуватися де завгодно всередині функції greet
.
нехай має блок-сферу дії
До змінної, оголошеної з, let
можна отримати доступ лише всередині блоку коду. Наприклад,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Вихідні дані
hello world Uncaught ReferenceError: b не визначено
У наведеній вище програмі змінна a оголошена всередині функції, і до неї можна отримати доступ в будь-якому місці всередині функції (a стає областю дії функції).
Однак змінна b оголошується всередині if
оператора блоку. b буде з блоком, і доступ до нього можна отримати лише всередині if
блоку.
Отже, при спробі отримати доступ до b поза if
блоком, виникає помилка (як показано вище в програмі).
Примітка : Змінні, оголошені всередині функції, будуть функціонувати як для, так var
і для let
.
let не дозволяє повторно оголошувати змінні
1. Змінна, оголошена з, var
може бути повторно оголошена. Наприклад,
var a = 5; // 5 var a = 3; // 3
Змінна, оголошена з, let
не може бути повторно оголошена в тому самому блоці або в тій самій області. Наприклад,
let a = 5; let a = 3; // error
Вихідні дані
Uncaught SyntaxError: Ідентифікатор "а" вже оголошено
2. Перевизначення змінної з var
іншим обсягом або блоком також змінює значення зовнішньої змінної. Наприклад,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Повторне оголошення змінної з let
іншим обсягом або блоком розглядає цю змінну як іншу змінну. І значення змінної зовні не змінюється. Наприклад,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Коли змінна, оголошена з var
, використовується у циклі, значення цієї змінної змінюється. Наприклад,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
У наведеній вище програмі for
цикл повторно оголошує змінну a. Отже, значення в кінці a
змінюється на 3 .
Коли змінна, оголошена let , використовується в циклі, значення змінної не змінюється. Наприклад,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
У наведеній вище програмі for
цикл обробляє змінну а як змінну, відмінну від заявленої вище. І область дії цієї змінної знаходиться лише всередині for
циклу. Отже, значення змінної а в кінці залишається 2 .
нехай не дозволяє підняття
Змінні, оголошені за допомогою var
, піднімаються до верхньої частини області програми. Наприклад,
console.log(a); var a; // undefined (not an error)
Ключове слово let
не дозволяє піднімати. Наприклад,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Якщо ви хочете дізнатись більше про підйом, відвідайте JavaScript підйом.
let і var Підтримка браузера
Більшість сучасних браузерів підтримують використання let
. Однак деякі браузери підтримують не повністю let
.
Щоб дізнатись більше, відвідайте JavaScript, дозвольте підтримку браузера.
Примітка : У випадку глобального масштабу, і те, var
і інше let
поводитимуться однаково. Наприклад,
var a = 5; // 5
Змінна a має глобальний масштаб і доступ до неї можна отримати в будь-якому місці програми.
let a = 5; // 5
Змінна a має глобальний масштаб і доступ до неї можна отримати в будь-якому місці програми.