2012-06-13 38 views
7

thể trùng lặp:
Is it safe to assume strict comparison in a Javascript switch statement?javascript switch/case: là loại so sánh?

Liệu một câu lệnh switch/trường hợp trong javascript so sánh các loại hoặc chỉ có giá trị?

Nói cách khác, khi tôi có đoạn mã sau:

switch (variable) 
{ 
    case "0": [...] break; 
    case "1": [...] break; 
    default: [...] break; 
} 

là nó tương đương với

if (variable == "0") 
{ 
    [...] 
} 
else if (variable == "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

hoặc

if (variable === "0") 
{ 
    [...] 
} 
else if (variable === "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

chỉnh sửa: là có một cách để buộc so sánh các giá trị và loại cùng một lúc?

+8

Bạn có thể dễ dàng kiểm tra nó ... – gdoron

+3

Vâng, nó đã có thể lấy ít thời gian để gõ vào một jsfiddle hơn nó đã gõ trong câu hỏi :-) – Pointy

+0

@amnotiam . Làm thế nào để bạn tìm thấy chúng...? bạn đã thấy nó trước đây chưa? – gdoron

Trả lời

9

Có, các loại được so sánh.

Nếu đầu vào bằng mệnh đềSelector như được xác định bởi toán tử ===, thì đặt thành true.

ECMA-262, trang 95.

1

Nó kiểm tra các loại là tốt,

Ví dụ:

var x = false; 

switch (x) { 
case "": 
    alert('x'); /// Not happening 
    break; 
case false: 
    alert('y'); // happen 
    break; 
}​ 

Live DEMO

Và như spec nói:

Nếu đầu vào bằng clauseSelector theo quy định của === toán tử, sau đó ...

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