Sự khác biệt cốt lõi nằm ở điểm tham chiếu và vị trí của phần tử trong luồng văn bản (document flow).
position (khác static).Tạo một "Card" sản phẩm với nhãn "Hot Sale" ở góc. Set position: relative cho Card và position: absolute cho nhãn. Điều này giúp nhãn luôn cố định ở góc Card bất kể kích thước màn hình thay đổi.
% hoặc rem để tránh việc phần tử absolute bị đè lấp nội dung khác trên thiết bị di động.
Vai trò của DNS: Đóng vai trò "thông dịch viên", chuyển đổi tên miền (ví dụ: mysite.com) sang địa chỉ IP của máy chủ.
| Đặc tính | var |
let |
const |
|---|---|---|---|
| Scope | Function scope | Block scope {} |
Block scope {} |
| Hoisting | Có (giá trị undefined) |
Có (nằm trong TDZ) | Có (nằm trong TDZ) |
| Gán lại | Có | Có | Không |
if (true) {
var a = 10;
let b = 20;
}
console.log(a); // 10
console.log(b); // Lỗi: ReferenceError: b is not defined
Cách Debug: Sử dụng tab Sources trong Chrome DevTools, đặt Breakpoint để theo dõi biến trong mục Scope ở cột bên phải.
Khái niệm: Là kỹ thuật gán sự kiện cho phần tử cha thay vì từng phần tử con đơn lẻ, tận dụng cơ chế Event Bubbling (sự kiện nổi bọt).
document.querySelector('#myList').addEventListener('click', function(e) {
if(e.target && e.target.nodeName === "LI") {
alert("Bạn đã click vào: " + e.target.innerText);
}
});