2013-05-25 20 views

Trả lời

5

Liệu add này 'dataValidate' đến đối tượng cửa sổ

Vâng, nó sẽ.

Ví dụ: nếu bạn đang ở trong phạm vi khác;

function foo() { 
    var bar = 4; 

    window.bar = bar; 
} 

Bây giờ bạn đã thực hiện bar toàn cầu, và có thể truy cập nó từ bất cứ nơi nào . Nếu không có window.bar = bar, bạn chỉ có thể truy cập trong phạm vi foo().

Bạn thường thấy thông tin này được sử dụng ở cuối IIFE, để xuất bản hoạt động với phần còn lại của thế giới (ví dụ: jQuery);

(function() { 
    var jQuery; 

    // Setup jQuery 

    window.jQuery = jQuery; 
}()); 

Bạn có thể thấy những người thực hiện việc này thay thế;

function foo() { 
    bar = 4; // Note the lack of `var` 
} 

Điều này có tác dụng tương tự thông qua việc sử dụng "globals ngụ ý"; nhưng nó sẽ ném một lỗi vào chế độ nghiêm ngặt của ES5 và thường được coi là thực hành không tốt (người lập trình có ý định làm cho nó toàn cầu hoặc họ chỉ vô tình bỏ qua var?).

+2

Nó sẽ chỉ ném một lỗi trong chế độ nghiêm ngặt ES5 - trong chế độ không nghiêm ngặt của đặc điểm kỹ thuật ES5 nó sẽ không. –

+1

@ Qantas94Heavy: Haha, cảm ơn vì sự điều chỉnh ... bộ não của tôi đã viết "chế độ nghiêm ngặt ES5", nhưng dường như bàn phím của tôi có những ý tưởng khác;). – Matt

+1

hoặc một phần của bộ não của bạn đã suy nghĩ nghiêm ngặt và người kia đang ăn nó :-) – tgkprog

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