Chức năng setTimeout
mong đợi tham chiếu hàm * làm đối số: tham chiếu là biến và không có dấu ngoặc đơn.
Chức năng gọi yêu cầu dấu ngoặc đơn (ngay cả khi chức năng không có tham số).
Nutshell:myFunction
là tham chiếu đến hàm. myFunction()
thực thi hàm, và trong một biểu thức, sẽ "bằng" giá trị trả lại của hàm (hoặc undefined
nếu không có gì được trả về).
Đào sâu: Có trường hợp setTimeout(myFunction(), 1000)
thể có ý nghĩa, như thế nào nếu myFunction()
tự trả một hàm. Ví dụ:
var myFunction = function() {
return function() {
alert("ohai");
};
};
- Các chức năng ẩn danh (có chứa một
return
tuyên bố đơn) được thực hiện ngay lập tức.
- Giá trị trả về của hàm đó chính là hàm có chứa
alert
.
Vì vậy:
myFunction
mình là một tham chiếu đến một chức năng (điều đó xảy ra để trả về một hàm).
myFunction()
sẽ thực thi. Nó đánh giá tham chiếu hàm, thích hợp cho setTimeout()
.
Cuối cùng:
setTimeout(myFunction(), 1000);
Điều này đòi hỏi giá trị trả về myFunction()
's trong một giây. Một giây sau, bật lên cảnh báo.
Xem thêm Why function statement requires a name?
* Hoặc một chuỗi để được đánh giá, nhưng một tài liệu tham khảo được ưa thích.
Nguồn
2011-11-01 15:55:03
Ồ ... Điều đó có ý nghĩa. –