- Destructuring: rút giá trị từ mảng/object ra biến.
const [a, b] = arr,const { x, y } = obj.- Đổi tên
{ x: newX }, mặc định{ x = 0 }, lồng nhau, dùng cho tham số hàm. - Spread
...: "trải" phần tử ra. - Sao chép nông + gộp:
[...a, ...b],{ ...o1, ...o2 }(key sau đè key trước). - Truyền mảng làm đối số:
fn(...args). - Rest
...: "gom" phần còn lại thành một biến. - Tham số biến thiên:
function f(first, ...others). - Trong destructuring:
const [head, ...tail] = arr.
Phân biệt: cùng ký hiệu ... nhưng spread trải ra ở vế phải/lời gọi, rest gom lại ở vế trái/tham số. Lưu ý spread chỉ sao chép nông (nested object vẫn dùng chung tham chiếu).