Khu vực mà tôi thường thấy hữu ích nhất là ở các chức năng gọi lại. Ký hiệu này cũng có thể được sử dụng trong trường hợp bạn cần đưa biến vào hàm gọi lại, nhưng bạn cần trạng thái biến không bị ảnh hưởng bởi những gì diễn ra bên ngoài hàm.
var someVal = 1;
setTimeout((function(one) {
return function() {
alert(one); // alerts a 1 even 10 seconds after someVal++;
}
})(someVal), 10000);
someVal++; // the value in the setTimeout will remain the same as it is locked inside.
Trong ngữ cảnh này, setTimeout có chức năng không có đối số. Vì vậy, câu hỏi về cách chuyển một giá trị cho hàm đó được trả lời bằng cách tạo ra một hàm nhận một đối số trả về một hàm lấy 0 đối số.
Tôi đề nghị bất cứ ai muốn tìm hiểu thêm về sức mạnh của ký hiệu này để chơi cùng với nó trong bảng điều khiển Firebug JavaScript. Một khi bạn quấn đầu xung quanh khái niệm này, bạn sẽ bắt đầu thấy các khu vực mà khái niệm mạnh mẽ này có thể được sử dụng.
@delnan: Bạn nói đúng, nhưng tôi nghĩ đó chỉ là một trong những câu hỏi khó tìm kiếm một chút. Mặc dù tôi sẽ đặt cược rằng nếu một người tìm kiếm * "Cú pháp này là gì trong javascript" *, họ sẽ gặp một vài câu trả lời. : o) – user113716
@delnan - Tôi nghĩ bạn có thể đang ở trên trang web sai. Đây là Stack Overflow, nơi mọi người đến để được giúp đỡ. Bạn thua? Có lẽ bạn đang ở trên trang web sai? – jmort253
@ delnan, tôi giả sử bằng cách đặt câu hỏi này cũng đang học, nhưng không phải ở cấp độ bạn thích hoặc cho là thích hợp. Tôi đã cố gắng tìm kiếm nó, nhưng không nhận được câu trả lời. và vì điều đó, tôi cảm ơn @patrick vì đã dành thời gian để trả lời tôi. – Oliver