Sự khác biệt trong khai báo hàm
Cả hai cách khai báo hàm đều tương đương, nhưng có một sự khác biệt đáng kể: các hàm được khai báo dưới dạng Function Declaration sẽ có sẵn, ngay cả khi truy cập chúng trước thời điểm chúng được khai báo.
Xem ví dụ:
// Truy cập hàm trước khi khai báo nó:
func(); //sẽ in ra '!'
function func() {
console.log('!');
}
Còn các biểu thức hàm được tạo ra tại thời điểm mã thực thi và không khả dụng ở phía trên. Do đó mã như thế này sẽ báo lỗi:
func(); //lỗi, hàm này chưa tồn tại!
let func = function() {
console.log('!');
};
Tạo một hàm dưới dạng Function Declaration. Kiểm tra xem nó có khả dụng ở phía trên vị trí khai báo của nó hay không.
Tạo một hàm dưới dạng Function Expression. Kiểm tra xem nó có khả dụng ở phía trên vị trí khai báo của nó hay không.