2.1 Biến trong JavaScript
JavaScript là một ngôn ngữ lập trình linh hoạt và động, hỗ trợ nhiều cách khai báo biến và làm việc với các kiểu dữ liệu. Trong bài giảng này, chúng ta sẽ tìm hiểu ba cách chính để khai báo biến (var, let, const) và các kiểu dữ liệu nguyên thủy cơ bản trong JavaScript.
Biến trong JavaScript
JavaScript là một ngôn ngữ với kiểu dữ liệu động. Biến trong đó không có kiểu dữ liệu. Bất kỳ biến nào cũng có thể gán bất kỳ giá trị nào vào bất kỳ thời điểm nào (nhưng có những sắc thái).
Để tạo một biến, cần viết cấu trúc như sau:
var name;
Biến có thể được gán giá trị ngay lập tức:
var name = value;
Nhưng thực ra trong JavaScript có tới 3 cách để tạo biến. Hãy cùng tìm hiểu chi tiết về chúng.
Toán tử var
Biến được khai báo bằng var có phạm vi toàn cục hoặc chức năng. Chúng bị ảnh hưởng bởi "hoisting", tức là khai báo của chúng được chuyển lên đầu phạm vi của mình khi thực thi mã.
Ví dụ:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
Trong ví dụ này, biến x được "hoisted" lên đầu phạm vi của nó, vì vậy console.log đầu tiên hiển thị undefined.
Nói cách khác, "hoisting" biến mã của bạn thành thế này:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
Toán tử let
Các nhà phát triển rất muốn thay đổi hành vi của toán tử var, nhưng họ lo sợ làm hỏng hàng triệu dòng mã đã viết. Vì vậy, họ đã nghĩ ra một toán tử khác, cũng tạo ra biến, nhưng với hành vi hơi khác.
Biến được khai báo bằng let có phạm vi khối. Điều này có nghĩa là chúng chỉ có sẵn trong phạm vi khối mã (thường trong dấu ngoặc {}) mà chúng được khai báo. let không bị hoisting như var.
Ví dụ:
Biến y chỉ tồn tại trong khối if.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
Toán tử const
Biến được khai báo bằng const cũng có phạm vi khối và không thể tái gán sau khi được khởi tạo. Tuy nhiên, điều này không làm cho đối tượng được khai báo qua const bất biến — các thuộc tính của chúng có thể thay đổi.
Tức là biến không thể thay đổi, nhưng đối tượng mà nó tham chiếu thì có thể. Muốn tốt hơn nhưng lại rơi vào tình huống quen thuộc.
Ví dụ:
Trong ví dụ này, hằng số x không thể tái gán, nhưng đối tượng obj có thể thay đổi.
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // Đây là hợp lệ
console.log(obj.name); // Bob
2.2 Kiểu dữ liệu nguyên thủy
JavaScript hỗ trợ nhiều kiểu dữ liệu nguyên thủy, đại diện cho các giá trị đơn giản, không phải là các đối tượng phức tạp.
Kiểu Number
Đại diện cho bất kỳ giá trị số nào, bao gồm cả số nguyên và số thập phân.
Ví dụ:
let num = 42;
let pi = 3.14;
Kiểu String
Đại diện cho dữ liệu văn bản: các chuỗi, ký tự, emoji. Tất cả những gì trông giống chuỗi đều thuộc về đây.
Ví dụ:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
Kiểu Boolean
Đại diện cho các giá trị logic true hoặc false.
let isTrue = true;
let isFalse = false;
Kiểu Null
Đại diện cho việc không có giá trị có chủ ý.
let empty = null;
Nếu kiểu chỉ có một giá trị, điều đó có nghĩa là không có giá trị, thì có phải nó là một giá trị độc nhất hơn là một kiểu độc nhất không?
Kiểu Undefined
Đại diện cho giá trị của biến đã được khai báo nhưng chưa được khởi tạo.
let notAssigned;
console.log(notAssigned); // undefined
2.3 So sánh var, let, và const
Cuối cùng, hãy so sánh lại ba cách tạo biến của chúng ta:
| Đặc tính | var | let | const |
|---|---|---|---|
| Phạm vi | Toàn cục hoặc chức năng | Khối | Khối |
| Hoisting | Có, nhưng khởi tạo không hoisting | Không | Không |
| Tái gán | Có | Có | Không |
| Khởi tạo | Không bắt buộc | Không bắt buộc | Bắt buộc |
JavaScript cung cấp một số cách khai báo biến, mỗi cách có đặc trưng và tính áp dụng của riêng chúng tùy thuộc vào ngữ cảnh. var được sử dụng ít hơn vì các đặc điểm "hoisting" và phạm vi toàn cục. let và const được ưu tiên hơn trong JavaScript hiện đại vì phạm vi khối và kiểm soát tái gán của chúng.
Các kiểu dữ liệu nguyên thủy cho phép làm việc với các cấu trúc dữ liệu cơ bản, đảm bảo chức năng cơ bản cần thiết để tạo ra các ứng dụng phức tạp. Và đây là ngôn ngữ phổ biến nhất trên thế giới :)
GO TO FULL VERSION