2012-07-10 26 views
16

thể trùng lặp:
What does “javascript:void(0)” mean?
What does void 0 mean?Làm thế nào để hiểu "trả về obj === void 0" trong nguồn của gạch dưới?

Trong tập tin http://underscorejs.org/underscore.js, bạn có thể xem như một khối mã:

// Is a given variable undefined? 
_.isUndefined = function(obj) { 
    return obj === void 0; 
}; 

Tôi không hiểu được void 0 một phần, nó rất lạ. Làm thế nào để hiểu nó?

+0

http://stackoverflow.com/questions/7452341/what-does-void-0-mean – Freewind

Trả lời

11

Đây là giao diện điều khiển đầu ra

>typeof void 0 
"undefined" 
>void 0 === undefined 
true 
>"undefined".length 
9 
>"void 0".length 
6 

Tôi nghĩ rằng họ đang cố gắng tiết kiệm 3 byte kích thước tập tin;)

Edit: này SO câu trả lời ý nghĩa hơn của việc sử dụng void 0, như undefined chỉ là tài sản của đối tượng window và có thể thay đổi. Do đó void 0 là cách đáng tin cậy để tạo không xác định trên các trình duyệt

+2

Cảm ơn, nhưng có giải thích về "void 0" không? Tôi đã nghĩ rằng đó là một lời gọi hàm của 'void (0)' nhưng thiếu '()'. Có vẻ không chính xác. – Freewind

+4

'void' gần giống như' typeof' không phải là hàm mà là toán tử – Tamil

+0

Điều đó có ý nghĩa để hiểu. –

7

Trong javascript (từ 1.1), toán tử void được sử dụng để đánh giá biểu thức và trả về undefined.

Xem ECMAScript Language Specification of the void operator

Vì vậy void 0 là một cách chính xác và tiêu chuẩn để sản xuất undefined.

Vì nó là một toán tử, không cần dấu ngoặc đơn.

+2

Ngoài ra vấn đề ở đây là người ta có thể ghi đè toàn cầu undefined trong JS và gây ra rất nhiều vỡ. Bằng cách đó các thư viện sử dụng void 0 an toàn hơn. –

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