Có một sự khác biệt giữa:Sự khác nhau giữa IIFE và gọi
(function(){
}).call(this);
và
(function(){
})();
hoặc
var MODULE = {};
(function(){
this.hello = 'world'
}).call(MODULE);
và
var MODULE = {};
(function(m){
m.hello = 'world'
})(MODULE);
Tôi thường thấy trường hợp đầu tiên trong javascript được biên dịch. Cả hai đều sẽ tạo ra một phạm vi và làm tốt công việc của họ.
Có sự khác biệt nào hay chỉ là vấn đề về hương vị.
Chỉnh sửa: Và tại sao JavaScript được biên dịch sẽ sử dụng cuộc gọi qua IIFE?
Ý anh là gì bởi "javascript biên soạn"? –
như coffescript, hoặc hợp kim cho Titanium –
Nó sẽ thực sự phụ thuộc vào những gì 'this' là tại điểm gọi; trong hầu hết các trường hợp sẽ không có sự khác biệt bởi vì tất cả các mã được bao bọc bởi nó. –