Ba cách định nghĩa hàm trong JS, khác nhau về hoisting và this binding:
1) Function declarationfunction sum(a, b) { return a + b }
- Có thể gọi trước chỗ khai báo (hoisting).
2) Function expressionconst sum = function(a, b) { return a + b }
- Chỉ gọi được sau khi gán.
3) Arrow functionconst sum = (a, b) => a + b
- Ngắn gọn, không có this riêng, không dùng làm constructor.
Cho người mới: bắt đầu bằng declaration hoặc expression, dùng arrow nhiều cho callback.