Tài liệu JavaScript
Tài liệu tham khảo JavaScript ngắn gọn, đi kèm ví dụ. Đọc khái niệm, xem code, rồi luyện tập trong một hành trình Coddy.
Bắt đầu khóa họcBắt đầu
- JavaScript là gìJavaScript thực sự là gì, chạy ở đâu, dùng để làm gì và khác Java, TypeScript ra sao: phần giới thiệu dễ hiểu cho người mới bắt đầu.
- Chạy JavaScriptNhững cách thực tế để chạy JavaScript năm 2026: console của trình duyệt, thẻ script trong HTML, Node.js trên terminal, và khi nào nên dùng cách nào.
- Cú pháp và dấu chấm phẩyCú pháp JavaScript hoạt động thế nào: câu lệnh, khối lệnh, biểu thức, cùng sự thật về dấu chấm phẩy, cơ chế tự động chèn dấu chấm phẩy và lúc nó gây lỗi.
- Strict modeStrict mode thay đổi những gì trong JavaScript, cách bật nó, và vì sao code hiện đại (module và class) tự động có strict mode.
- Chú thíchCách chú thích hoạt động trong JavaScript: `//` cho một dòng, `/* */` cho cả khối, và những thói quen giúp chú thích thật sự có ích thay vì gây nhiễu.
Biến và kiểu dữ liệu
- let, const, varBa cách khai báo biến trong JavaScript, và vì sao code hiện đại mặc định dùng `const`, dùng `let` khi bắt buộc và gần như không bao giờ dùng `var`.
- Kiểu nguyên thủyBảy kiểu dữ liệu nguyên thủy trong JavaScript: string, number, bigint, boolean, null, undefined, symbol, và chúng khác đối tượng ở điểm nào.
- Chuỗi và templateChuỗi hoạt động thế nào trong JavaScript: dấu nháy, backtick, nội suy, văn bản nhiều dòng và những phương thức bạn thực sự hay dùng.
- Number và BigIntKiểu Number của JavaScript thực sự hoạt động thế nào: độ chính xác của số thực dấu phẩy động, MAX_SAFE_INTEGER và khi nào nên chuyển sang BigInt.
- null và undefinednull và undefined trong JavaScript thực sự khác nhau ở đâu, cách kiểm tra từng giá trị và nên dùng giá trị nào trong code của bạn.
- Ép kiểu (type coercion)JavaScript ép kiểu giá trị như thế nào: những quy tắc ngầm định hay gây nhầm lẫn, các phép chuyển đổi tường minh nên ưu tiên và khi nào mỗi loại xảy ra.
- Toán tử so sánh bằngSo sánh bằng trong JavaScript hoạt động thế nào: nghiêm ngặt và lỏng lẻo, những điểm kỳ quặc của ==, cách NaN và đối tượng hoạt động, khi nào dùng Object.is.
Luồng điều khiển
- Toán tửCác toán tử JavaScript cung cấp để tính toán, so sánh giá trị, kết hợp boolean và gán giá trị, cùng những điểm lạ thực sự gây lỗi trong thực tế.
- if / elseCâu lệnh if/else trong JavaScript hoạt động thế nào: điều kiện, chuỗi else if, các bẫy về truthy, và khi nào nên dùng toán tử ba ngôi thay thế.
- SwitchCâu lệnh switch trong JavaScript hoạt động thế nào: case, break, default, fallthrough, và khi nào switch tốt hơn một chuỗi if/else.
- Vòng lặp forVòng lặp `for` cổ điển trong JavaScript hoạt động thế nào: phần đầu gồm ba phần, duyệt mảng, break và continue, vòng lặp lồng nhau và những lỗi thường gặp.
- Vòng lặp whileVòng lặp `while` và `do...while` hoạt động thế nào trong JavaScript: khi nào nên dùng thay cho `for` và cách tránh vòng lặp vô hạn.
- for...of & for...infor...of và for...in trong JavaScript thực sự khác nhau thế nào: giá trị hay khóa, mảng hay object, và khi nào nên dùng vòng lặp nào.
- Truthy và falsyNhững gì được coi là truthy và falsy trong JavaScript, danh sách đầy đủ các giá trị falsy và cách chuyển đổi sang boolean diễn ra trong code thực tế.
Iterator và generator
- Iterator & generatorGiao thức iterator của JavaScript hoạt động thế nào, cách biến object của bạn thành iterable, và vì sao hàm generator khiến mọi thứ trở nên dễ dàng.
- SymbolSymbol trong JavaScript là gì, vì sao nó tồn tại, và các well-known symbol như Symbol.iterator giúp đối tượng của bạn kết nối với tính năng ngôn ngữ ra sao.
Hàm
- Khai báo hàmCách khai báo hàm trong JavaScript: từ khóa function, tham số, giá trị trả về, hoisting, và khi nào nên dùng khai báo hàm thay vì biểu thức hàm.
- Arrow functionCách arrow function hoạt động trong JavaScript: cú pháp `=>`, trả về ngầm định, cách nó xử lý `this`, và khi nào nên dùng nó thay cho `function`.
- Tham số và giá trị mặc địnhTham số hoạt động thế nào trong JavaScript: giá trị mặc định, khi nào undefined kích hoạt chúng, thứ tự đánh giá và sự khác nhau giữa tham số với đối số.
- Rest và spreadToán tử ... hoạt động thế nào trong JavaScript: gom đối số bằng tham số rest, trải mảng và đối tượng bằng spread, và khi nào nên dùng từng cách.
- ClosureClosure là một hàm ghi nhớ các biến xung quanh nó. Đây là cách closure hoạt động trong JavaScript, kèm ví dụ chạy được và các trường hợp dùng thực tế.
- Từ khóa this`this` thực sự hoạt động thế nào trong JavaScript: bốn quy tắc binding, vì sao arrow function khác biệt và cách tránh cái bẫy kinh điển 'this is undefined'.
- Hàm bậc caoHàm bậc cao trong JavaScript: truyền hàm làm đối số, trả về hàm từ một hàm khác, và các mẫu map/filter/reduce bạn sẽ dùng mỗi ngày.
Đối tượng và mảng
- Đối tượngĐối tượng trong JavaScript thực sự hoạt động thế nào: cách tạo, đọc và ghi thuộc tính, thêm phương thức và những cách viết giúp code dễ đọc.
- MảngCách mảng hoạt động trong JavaScript: tạo mảng, chỉ số, length, push/pop, slice và splice, và những kiểu vòng lặp dễ đọc nhất.
- DestructuringDestructuring trong JavaScript hoạt động thế nào: lấy giá trị từ đối tượng và mảng, đổi tên, giá trị mặc định, mẫu lồng nhau và tham số hàm.
- Object spreadToán tử spread cho đối tượng hoạt động thế nào trong JavaScript: sao chép, gộp, ghi đè thuộc tính và cái bẫy sao chép nông khiến nhiều người vấp.
- Phương thức mảngNhững phương thức mảng thay thế gần hết vòng lặp for của bạn: map, filter, reduce, find, some, every, và phương thức nào sửa mảng gốc, phương thức nào trả về mảng mới.
- Map & SetMap và Set trong JavaScript hoạt động thế nào, khác gì so với object và mảng thông thường, và khi nào dùng chúng thật sự có lợi.
- JSONCách chuyển object JavaScript sang JSON và ngược lại: JSON.stringify, JSON.parse, hàm replacer và reviver, cùng những giá trị bị mất khi chuyển qua lại.
- Optional chainingCách toán tử `?.` giúp bạn truy cập vào đối tượng lồng nhau, mảng và phương thức mà không bị lỗi khi gặp null hoặc undefined.
- Nullish coalescingCách toán tử `??` chỉ chọn giá trị mặc định khi một giá trị là `null` hoặc `undefined`, và vì sao nó tốt hơn `||` cho phần lớn giá trị mặc định trong thực tế.
Lớp và prototype
- LớpCách lớp trong JavaScript thật sự hoạt động: hàm khởi tạo, phương thức, trường của instance, getter và setter, và mô hình tư duy đằng sau từ khóa `class`.
- Kế thừaKế thừa hoạt động thế nào với lớp trong JavaScript: extends, super, ghi đè phương thức, và khi nào kế thừa không phải là lựa chọn đúng.
- Thành viên staticPhương thức và thuộc tính static hoạt động thế nào trong lớp JavaScript: khi nào nên dùng, `this` hoạt động ra sao và mẫu factory mà chúng mang lại.
- Private fieldCách tiền tố `#` biến trường và phương thức của lớp thành private thật sự trong JavaScript: cú pháp, quy tắc và vì sao quy ước dấu gạch dưới là chưa đủ.
- PrototypePrototype trong JavaScript thực chất là gì, chuỗi prototype tra cứu thuộc tính ra sao, và cú pháp `class` ánh xạ lên cùng cơ chế bên dưới như thế nào.
JavaScript bất đồng bộ
- Event LoopMô hình tư duy đằng sau JavaScript bất đồng bộ: call stack, hàng đợi task, hàng đợi microtask và cách event loop kết nối chúng với nhau.
- CallbackCách callback hoạt động trong JavaScript: truyền hàm làm đối số, khuôn mẫu error-first, và vì sao callback lồng nhau đã đẩy cộng đồng sang promise.
- PromiseCách Promise hoạt động trong JavaScript: ba trạng thái, nối chuỗi với then và catch, kết hợp bằng Promise.all và tự tạo Promise với new Promise.
- async/awaitCách async/await thật sự hoạt động trong JavaScript: hàm async, chờ promise, xử lý lỗi bằng try/catch và chạy các tác vụ song song.
- Fetch APICách dùng Fetch API trong JavaScript: request GET và POST, phân tích JSON, xử lý lỗi đúng cách và hủy các request chạy quá lâu.
- Lỗi bất đồng bộLỗi thực sự di chuyển thế nào trong JavaScript bất đồng bộ: try/catch với async/await, .catch trên promise và những cái bẫy âm thầm nuốt mất lỗi.
Module và công cụ
- ES ModulesES module trong JavaScript hoạt động thế nào: export có tên và export mặc định, cú pháp import, import() động và các quy tắc phân biệt module với script thường.
- CommonJS và ESMHai hệ thống module có sẵn trong JavaScript, vì sao cả hai cùng tồn tại, và cách chọn giữa require và import trong dự án Node.
- npm cơ bảnnpm thực sự hoạt động thế nào: cài package, init, dev dependency, cập nhật, và cách hiểu đúng về node_modules cùng tệp lockfile.
- package.jsonBên trong package.json có gì: những trường quan trọng, cách scripts hoạt động và cách khoảng phiên bản semver quyết định npm cài phiên bản nào.
- Node runtimeNode.js runtime là gì, khác trình duyệt ở điểm nào, và các API cốt lõi như biến toàn cục, module, process, fs giúp JavaScript chạy được phía máy chủ.
Lỗi và gỡ lỗi
- try/catchtry/catch/finally hoạt động thế nào trong JavaScript: bắt lỗi, đối tượng lỗi, ném lại lỗi và khi nào try/catch không phải công cụ phù hợp.
- Các loại lỗiCác loại lỗi có sẵn trong JavaScript: ý nghĩa của từng loại, khi nào bạn gặp chúng và cách đọc thông báo lỗi mà không phải đoán.
- Console & DevToolsCác phương thức của console và tính năng DevTools giúp debug JavaScript nhanh hơn nhiều so với rải console.log khắp nơi.
Làm việc với dữ liệu thực tế
- RegexBiểu thức chính quy hoạt động thế nào trong JavaScript: tạo mẫu, các phương thức chính (test, match, replace), cờ và nhóm bắt, kèm ví dụ thực tế.
- Date & TimeĐối tượng Date trong JavaScript thực sự hoạt động thế nào: tạo ngày, định dạng, tính toán, xử lý múi giờ và những điểm dễ khiến bạn vấp.
- URL và query stringCách phân tích, tạo và chỉnh sửa URL trong JavaScript bằng API `URL` và `URLSearchParams`, không cần regex và không dính bug ở các trường hợp đặc biệt.