JavaScript là một ngôn ngữ lập trình phổ biến và mạnh mẽ được sử dụng để tạo ra các trang web tương tác. Trong khi nhiều nhà phát triển hiện nay sử dụng các framework như React, Angular hay Vue.js, việc nắm vững kiến thức về Vanilla JavaScript (JavaScript thuần túy) vẫn rất quan trọng. Vanilla JavaScript đề cập đến JavaScript nguyên bản, không sử dụng bất kỳ thư viện hay framework nào. Đây là nền tảng của tất cả các công nghệ và thư viện JavaScript hiện đại.
Dưới đây là tổng quan về các khái niệm cơ bản và nâng cao trong Vanilla JavaScript mà bạn nên biết:
1. Cú Pháp Cơ Bản
Biến và Kiểu Dữ Liệu:
Biến: var
, let
, và const
là ba cách khai báo biến trong JavaScript. let
và const
được giới thiệu trong ES6 và có phạm vi khối, khác với var
có phạm vi hàm.
Kiểu Dữ Liệu: JavaScript có các kiểu dữ liệu cơ bản như Number
, String
, Boolean
, Object
, Array
, và Function
. Kiểu dữ liệu null
và undefined
cũng thường xuyên được sử dụng.
Toán Tử:
Các toán tử cơ bản như +
, -
, *
, /
, và %
.
Các toán tử so sánh như ==
, ===
, !=
, !==
, >
, <
, >=
, và <=
.
Các toán tử logic như &&
, ||
, và !
.
Cấu Trúc Điều Khiển:
Câu Lệnh Điều Kiện: if
, else if
, else
, và switch
.
Vòng Lặp: for
, while
, và do...while
.
2. Chức Năng (Functions)
Khái Niệm: Hàm trong JavaScript là một khối mã có thể được gọi để thực hiện một nhiệm vụ cụ thể. Hàm có thể nhận đối số và trả về giá trị.
Khai Báo Hàm:
Hàm Ký Hiệu: function myFunction() { ... }
Hàm Biểu Thức: const myFunction = function() { ... };
Hàm Mũi Tên: const myFunction = () => { ... };
Hàm Callback: Hàm được truyền vào một hàm khác như là đối số để thực thi khi một sự kiện xảy ra hoặc một nhiệm vụ hoàn tất.
Hàm Ẩn Danh (Anonymous Functions): Hàm không có tên, thường được sử dụng khi cần truyền hàm vào các phương thức như setTimeout
, map
, và filter
.
3. Đối Tượng và Mảng
Đối Tượng (Objects):
Khai Báo Đối Tượng: const person = { name: 'John', age: 30 };
Truy Cập Thuộc Tính: person.name
hoặc person['name']
.
Mảng (Arrays):
Khai Báo Mảng: const fruits = ['Apple', 'Banana', 'Orange'];
Truy Cập Phần Tử: fruits[0]
sẽ trả về 'Apple'
.
Phương Thức: push()
, pop()
, shift()
, unshift()
, map()
, filter()
, và reduce()
.
4. Xử Lý Sự Kiện
Khái Niệm: JavaScript có thể phản hồi với các sự kiện như nhấp chuột, gõ phím, hoặc di chuột.
Thêm Sự Kiện:
Phương Thức Truyền Thống: element.onclick = function() { ... };
Sự Kiện Lắng Nghe: element.addEventListener('click', function() { ... });
5. Quản Lý DOM (Document Object Model)
Khái Niệm: DOM là một cấu trúc cây biểu diễn tài liệu HTML, giúp JavaScript tương tác với các phần tử của trang web.
Chọn Phần Tử:
getElementById
: document.getElementById('myId')
querySelector
: document.querySelector('.myClass')
Thay Đổi Nội Dung và Thuộc Tính:
Thay Đổi Nội Dung: element.textContent = 'New Content';
Thay Đổi Thuộc Tính: element.setAttribute('attributeName', 'value');
6. Promise và Async/Await
Promise: Là một đối tượng đại diện cho kết quả của một phép toán bất đồng bộ. Ví dụ: new Promise((resolve, reject) => { ... });
Async/Await: Cung cấp cách dễ dàng hơn để làm việc với các promise, giúp mã dễ đọc hơn.
Async Function: async function fetchData() { ... }
Await Expression: const data = await fetchData();
7. Các Tính Năng ES6 và Các Phiên Bản Mới
Template Literals: Cú pháp ${}
để nhúng biểu thức vào chuỗi.
Destructuring: Trích xuất giá trị từ mảng hoặc đối tượng.
Mảng: const [a, b] = [1, 2];
Đối Tượng: const { name, age } = person;
Spread và Rest Operators:
Spread: const arr2 = [...arr1];
Rest: function myFunction(...args) { ... }
8. Xử Lý Lỗi và Debugging
Console Methods: console.log()
, console.error()
, console.warn()
, console.table()
.
Debugging Tools: Sử dụng DevTools của trình duyệt để kiểm tra và gỡ lỗi mã JavaScript.
9. Thực Hành và Nâng Cao
Luyện Tập: Thực hành với các bài tập nhỏ và dự án để củng cố kiến thức.
Tài Nguyên Học Tập: Sử dụng các tài liệu trực tuyến, diễn đàn, và các khóa học để cập nhật kiến thức mới.
Hiểu biết vững về Vanilla JavaScript sẽ giúp bạn xây dựng nền tảng vững chắc cho việc học các framework và thư viện hiện đại. Nó cũng giúp bạn viết mã hiệu quả và dễ bảo trì hơn trong mọi dự án web.
Kết nối với web designer Lê Thành Nam