Tôi đang cố gắng để quấn quanh đầu của tôi là tại sao mã sau dẫn đến tràn ngăn xếp khi các dấu ngoặc đơn được bao gồm, nhưng không khi chúng bị bỏ qua.Tại sao tôi phải bỏ qua dấu ngoặc đơn khi chuyển một hàm làm đối số?
Tôi đang gọi chính hàm đó làm đối số cho setTimeout và nó hoạt động mà không có dấu ngoặc đơn, nhưng tất nhiên là không thành công khi tôi thêm chúng. Đó là trực giác của tôi để thêm() sau hàm. Chỉ hy vọng ai đó có thể làm rõ điều này cho tôi. Khi nào là parans tùy chọn và không?
TRƯỜNG HỢP 1:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo(), 2000)
}
// RangeError: Maximum call stack size exceeded
TRƯỜNG HỢP 2:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo, 2000)
}
// parens are omitted on foo function and it works.
Có thể là một sự lừa đảo. Điều này sẽ giúp: http://stackoverflow.com/questions/5520155/settimeout-callback-argument/5520190#5520190 –
cảm ơn bạn rất nhiều lwburk, lời giải thích của bạn trong liên kết đó đã giải quyết mọi thứ cho tôi. –