2012-04-25 36 views
8

Trong this thread Tôi tìm thấy đoạn mã JavaScript mà tôi muốn sử dụng.cách sử dụng (chức năng (toàn cầu) {...}) (điều này);

Mã này trông giống như:

(function(global) { 
    // the function code comes here 
})(this); 

Làm thế nào tôi có thể gọi chức năng này để thực thi mã? Tôi phải chuyển cho biến số global này là gì?

+0

Bạn không phải chuyển bất kỳ thứ gì - 'this' (bất kể' this' này - sẽ phụ thuộc vào ngữ cảnh) đã được truyền như giá trị của tham số 'global' . –

Trả lời

16

Chức năng này được thực hiện ngay lập tức, bạn không thực thi nó bằng cách gọi nó.

Đây là định nghĩa hàm theo hàm, theo sau là hai dấu ngoặc đơn khiến hàm đó gọi ngay lập tức. Đọc thêm: Immediately-Invoked Function Expression (IIFE)

Bất kỳ mã nào bạn đặt bên trong đều chạy ngay lập tức. Bất cứ điều gì được đặt trong parens lời gọi được chuyển vào hàm như một đối số. Giả sử mã mẫu của bạn đã được xác định trong phạm vi toàn cục, this là đối tượng window và được tham chiếu là global trong phần thân hàm. Đó là một cách tuyệt vời để đóng gói các chương trình của bạn để tránh va chạm biến đổi, buộc chế độ nghiêm ngặt và hơn thế nữa.

+1

Cảm ơn. Bài đăng trên blog rất hữu ích! – BetaRide

+0

Không có vấn đề, vui mừng vì nó đã giúp. – JAAulde

+1

Rất đẹp. Tự hỏi cú pháp đặc biệt này có ý nghĩa gì trong một thời gian. – dexter

1

Làm cách nào tôi có thể gọi hàm này để thực thi mã?

Nó đang được gọi là: (this)

Tôi phải làm gì để vượt qua trong cho biến toàn cầu này?

this

14

cấu trúc này định nghĩa một hàm:

function(global) { 
    // the function code comes here 
} 

và ngay lập tức gọi nó, đi qua this như một tham số:

([function])(this) 

Từ định danh global chỉ đơn giản là tên của tham số này bên trong phần thân hàm. Ví dụ: hãy thử

console.log(this); // outputs something 
(function(global) { 
    console.log(global); // outputs the same thing as above 
})(this); 
+1

Cảm ơn rất nhiều. Thật không may tôi không thể chấp nhận hai câu trả lời :-( – BetaRide

Các vấn đề liên quan