Có ba từ khóa để khai báo một biến:

  • var
  • let và const chỉ có trong ES6

Sự khác biệt

  1. Không thể truy cập biến let bên ngoài khối bao quanh gần nhất nơi nó được khai báo.
				
					{
    let foo;
}

// ReferenceError: foo is not defined
console.log(foo);
				
			

Mã mẫu ở trên hoạt động nếu chúng ta thay thế khai báo let bằng var khai báo.

2. letkhông thể sử dụng một biến trước khi nó được khai báo . Mã mẫu bên dưới ném một ReferenceError:

				
					{
    foo = 'hello';
    let foo;
    console.log(foo);
}
// ReferenceError: Cannot access 'foo' before initialization
				
			

Chúng ta sẽ thấy hello trong Bảng điều khiển nếu chúng ta sử dụng var trong mã mẫu ở trên.

3. Không thể khai báo lại các biến với let.

				
					// There is no problems if variables are re-declared with the same name
var foo, foo;
var bar;
var bar;

let baz;
let baz;
// Throw the following error
// SyntaxError: Identifier 'baz' has already been declared
				
			

4. Ở cấp cao nhất, các biến let toàn cục không được gắn với window  đối tượng toàn cục.

				
					let foo = 'hello';
window.foo; // undefined

var bar = 'world';
window.bar; // 'world'
				
			

5. Sử dụng let có thể tránh được vấn đề với các đóng cửa var có.

Để chứng minh vấn đề, giả sử rằng chúng ta có một danh sách các hàng. Trong mỗi hàng, chúng tôi có một nút để xóa mục liên kết trong hàng.

Chúng tôi lặp lại các mục và xử lý click sự kiện của nút trong mỗi hàng:

				
					for (var i = 0; i < 10; i++) {
    document.getElementById(`button-\${i}`).addEventListener('click', function () {
        // Remove the item
        console.log(i);
    });
}
				
			

6. Từ const khóa hoạt động giống như let , ngoại trừ biến không thể thay đổi.

				
					// Throw the following error
// SyntaxError: Missing initializer in const declaration
const a;
				
			

Bạn cũng phải xác định một giá trị cho một hằng số.

				
					const a = 'hello';

// Throw the following error
// TypeError: Assignment to constant variable
a = 'world';
				
			

Cần lưu ý rằng việc sử dụng const không có nghĩa là biến là bất biến. Bạn có thể thay đổi các thuộc tính của một đối tượng:

				
					const person = {};
person.age = 20;
				
			

Và thêm các mục khác vào một mảng:

				
					const arr = [];
arr.push('foo');
arr[1] = 'bar';
console.log(arr); // ['foo', 'bar']
				
			

Chúc bạn luyện tập tốt

Không sử dụng var trừ khi bạn phải hỗ trợ các trình duyệt cũ không hỗ trợ let và const từ khóa.

Tốt để biết

Mỗi ngôn ngữ lập trình sử dụng các từ khóa khác nhau để khai báo một biến và hằng số. Bảng sau liệt kê một số ví dụ:

Ngôn ngữ
Sự định nghĩa biến
Tuyên bố liên tục

C#

string s = "hello"

const string s = "hello"

Java

String s = "hello"

final String s = "Hello"

Scala

var s = "hello"

val s = "hello"

Swift

var s = "hello"

 

let s = "hello"

Leave a Reply

Your email address will not be published. Required fields are marked *