Mục Lục
- Biến và Phạm Vi
- Loại Dữ Liệu
- Toán Tử
- Luồng Điều Khiển
- Hàm
- Hoisting và Temporal Dead Zone
- Closures và Phạm Vi Từ
- Từ Khóa this và Ràng Buộc
- Prototypes và Chuỗi Prototype
- Đối Tượng và Mảng
- Quản Lý DOM
- Tính Năng ES6+
1. Biến và Phạm Vi
JavaScript cung cấp ba cách để khai báo biến: var, let, và const. Mỗi loại có phạm vi khác nhau:
var: Có phạm vi toàn cục hoặc hàm, có thể bị hoisting.let: Phạm vi khối, không thể hoisting.const: Cũng có phạm vi khối, nhưng không thể thay đổi giá trị sau khi đã được gán.
Thực Hành Tốt Nhất
- Sử dụng
letvàconstthay vìvarđể tránh lỗi không mong muốn. - Sử dụng
constcho các biến không thay đổi giá trị.
2. Loại Dữ Liệu
JavaScript chia thành hai loại chính: loại nguyên thủy và loại tham chiếu.
- Loại Nguyên Thủy:
number,string,boolean,null,undefined, vàsymbol. - Loại Tham Chiếu: Các đối tượng, bao gồm mảng và hàm.
Công Cụ Kiểm Tra Loại Dữ Liệu
- Sử dụng
typeofđể xác định loại dữ liệu. - Hiểu sự khác biệt giữa
nullvàundefined.
3. Toán Tử
JavaScript hỗ trợ nhiều loại toán tử:
- Toán Tử Số Học:
+,-,*,/,%. - Toán Tử So Sánh:
==,===,!=,!==. - Toán Tử Logic:
&&,||,!. - Toán Tử Ternary:
condition ? expr1 : expr2.
Ví Dụ về Toán Tử Ternary
javascript
const age = 18;
const canVote = age >= 18 ? 'Có thể bỏ phiếu' : 'Không thể bỏ phiếu';
console.log(canVote);
4. Luồng Điều Khiển
JavaScript cung cấp các cấu trúc điều khiển như:
- Câu Lệnh if-else: Sử dụng để kiểm tra điều kiện.
- Câu Lệnh switch: Dùng để so sánh nhiều điều kiện.
- Vòng Lặp:
for,while,do-while,for...in,for...of.
5. Hàm
Hàm có thể được định nghĩa bằng nhiều cách:
- Khai báo Hàm:
function name() { ... } - Biểu thức Hàm:
const name = function() { ... }; - Hàm Mũi Tên:
const name = () => { ... };
Thực Hành Tốt Nhất
- Sử dụng hàm mũi tên cho các hàm ngắn gọn và tránh vấn đề với
this.
6. Hoisting và Temporal Dead Zone
- Hoisting: Là hành vi JavaScript nâng cấp các khai báo lên đầu phạm vi.
- Temporal Dead Zone: Khoảng thời gian từ khi biến được khai báo đến khi nó có giá trị.
7. Closures và Phạm Vi Từ
Closures là một hàm bên trong một hàm khác, có thể truy cập vào các biến của hàm bên ngoài.
Ví Dụ về Closures
javascript
function outer() {
let count = 0;
return function inner() {
count++;
return count;
};
}
const increment = outer();
console.log(increment()); // 1
console.log(increment()); // 2
8. Từ Khóa this và Ràng Buộc
Từ khóa this trong JavaScript có thể thay đổi tùy theo ngữ cảnh:
- Sử dụng
call,apply, hoặcbindđể ràng buộcthis.
9. Prototypes và Chuỗi Prototype
Mỗi đối tượng trong JavaScript đều có một prototype, cho phép chia sẻ thuộc tính và phương thức.
Ví Dụ về Prototypes
javascript
function Person(name) {
this.name = name;
}
Person.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}`);
};
const john = new Person('John');
john.sayHello(); // Hello, my name is John
10. Đối Tượng và Mảng
JavaScript cho phép tạo và thao tác với các đối tượng và mảng:
- Tạo Đối Tượng: Sử dụng
{}hoặcnew Object(). - Mảng: Sử dụng
[]hoặcnew Array().
11. Quản Lý DOM
JavaScript có thể tương tác với DOM thông qua các phương thức như querySelector, addEventListener.
Ví Dụ về Quản Lý DOM
javascript
const button = document.querySelector('button');
button.addEventListener('click', () => {
alert('Button Clicked!');
});
12. Tính Năng ES6+
Những tính năng mới trong ES6 và các phiên bản sau:
- Template Literals: Cho phép nhúng biểu thức vào chuỗi.
- Modules: Sử dụng
importvàexportđể quản lý mã nguồn. - Async/Await: Cú pháp đơn giản hóa việc xử lý bất đồng bộ.
Kết Luận
JavaScript là một ngôn ngữ lập trình mạnh mẽ với nhiều tính năng phong phú. Việc nắm vững các khái niệm cơ bản và nâng cao sẽ giúp bạn phát triển ứng dụng hiệu quả hơn. Hãy thực hành thường xuyên và áp dụng những kiến thức này vào dự án thực tế để trở thành một lập trình viên JavaScript xuất sắc.
Câu Hỏi Thường Gặp (FAQ)
1. Tôi nên bắt đầu học JavaScript từ đâu?
Bắt đầu từ các khái niệm cơ bản như biến, loại dữ liệu và điều kiện.
2. Có cần thiết phải biết ES6 không?
Có, ES6 mang lại nhiều tính năng mới giúp lập trình nhanh hơn và dễ dàng hơn.
3. Làm thế nào để tối ưu hóa mã JavaScript của tôi?
Sử dụng linting, kiểm tra hiệu suất và viết code sạch sẽ.
Lời Khuyên
- Thực hành viết mã hàng ngày để cải thiện kỹ năng lập trình.
- Tham gia cộng đồng lập trình viên để chia sẻ và học hỏi thêm.
Hãy bắt đầu hành trình học JavaScript ngay hôm nay!