2012-08-10 32 views
5

Tôi thấy một đoạn mã khiến tôi khó hiểu. Chuyển đổi (! 0) có nghĩa là gì trong javascript? Một số trường hợp kỹ thuật này sẽ hữu ích khi sử dụng?switch (! 0) Có nghĩa là gì

jsTree sử dụng nó ở một vài nơi nhưng có vẻ ngoài nước. Tôi chắc rằng nó có lý do chính đáng đằng sau nó, nhưng không thể hiểu được.

http://www.jstree.com/

Dưới đây là một đoạn trích mã:

switch(!0) { 
    case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; 
    case ($.isFunction(s.data)): //... 
           break; 
} 
+2

Ai đó đang cố gắng để xáo trộn mã của họ tôi muốn nói. Đây là một cách hacky không sử dụng 'if' và' if else'. –

+0

Phong cách hipsta thẳng yo. –

+0

có thể trùng lặp của [Cái gì! 1 và! 0 có nghĩa là trong Javascript?] (Http://stackoverflow.com/questions/11550681/what-does-1-and-0-mean-in-javascript) –

Trả lời

9

Nó so sánh từng trường hợp để boolean true.

Lập

case (!s.data && !s.ajax) 

Nếu !s.data && !s.ajax đánh giá để true, sau đó trường hợp này sẽ được lựa chọn để thực hiện.

switch(true) cũng giống như switch(!0)

+0

Vui lòng giải thích câu trả lời của bạn – MMeah

+2

Làm cho bạn băn khoăn tại sao họ không chỉ nói 'chuyển đổi (đúng)' ... – cHao

+0

Liệu nó có dừng ngay trên đầu tiên đúng hay không. tất cả các trường hợp thực sự? – MMeah

2

Một switch(!0) chỉ đơn giản là giống như switch(true).

mô hình này:

switch (true) { 
    case (condition): do something; break; 
    case (condition): do something; break; 
    case (condition): do something; break; 
} 

Làm việc giống như:

if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} 
+0

Ngoại trừ câu lệnh if không cho phép giảm nếu 'ngắt' bị xóa. – MMeah

+1

@MMeah: Vâng, đó là sự thật. Điều đó không có nghĩa là bạn nên sử dụng nó, mặc dù ... :) – Guffa