2012-07-10 38 views
5

tôi thấy trong một số mã javascript mà mọi người viết một cái gì đó như thế này:Javascript TRUE và "true" tại sao một người nào đó sử dụng chuỗi thay vì boolean?

var myVar = "true"; 

//... 

if(myVar == "true") { 
    //... 
}else{ 
    //... 
} 

Tại sao mọi người không sử dụng đúng hay sai? Theo như tôi biết loại boolean là hiển nhiên đối với các trình duyệt.

Hoặc chỉ là mã không hợp lệ ... và cố gắng không bao giờ viết theo cách này.

+3

Cảnh báo: 'true! = 'True'' –

+1

Đó là' true' và 'false' thực sự (chữ thường), nhưng phân tích của bạn là đúng: sử dụng tốt hơn boolean thực thay vì chuỗi. –

+1

Và 'var myVar =" false "; nếu (myVar) cảnh báo ("O, hai!") 'sẽ cho bạn thấy cảnh báo là tốt. –

Trả lời

5

Đó chỉ là mã nghèo nàn. Cố gắng không bao giờ viết theo cách này.

Loại mã này chỉ là khủng khiếp để bảo trì. Cả hai số == (thay vì ===) và true làm chuỗi.

PS: bên cạnh đó, "true" == true // false. Đối với đối số ===, chỉ đơn giản là vì true == 1 // true và rất nhiều đối tượng khác trông giống như những thứ như thế này.

4

Bạn không nên làm điều này, trừ khi bạn thực sự mong đợi một chuỗi có chứa true vì một số lý do :). Nhưng ngay cả trong trường hợp đó, việc sử dụng strict equality (===) sẽ là lựa chọn đúng đắn.

Trong ví dụ mã bạn đang hiển thị, đây chỉ đơn giản là cách viết mã khủng khiếp.

+2

Trong trường hợp đó, bạn nên sử dụng sự bình đẳng chặt chẽ để làm cho nó rõ ràng cho bất cứ ai đọc mã. –

+0

@Matt Cảm ơn, bạn đã đúng. – kapa

1

Đó chỉ là mã người nghèo, như bạn nói.

A "thực" nhà phát triển không bao giờ viết if (condition == true), nhưng chỉ if (condition)

cũng có thể được viết if (true == condition). Điều này được gọi là kiểu Yoda và được thiết kế để ngăn việc gán biến không mong muốn nếu bạn viết nhầm = thay vì ==.

+3

Nếu bạn đang nói về các nhà phát triển "thực sự", đề cập đến '===' sẽ đáng giá khi thử nghiệm cho 'true' :). – kapa

+1

Đồng ý. Tôi đặc biệt làm điều này trong PHP khi thử nghiệm cho thất bại. – Cyrille

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