2014-06-12 25 views
9

Đồng nghiệp đã cho tôi grep đối với chuỗi "true: false" thông qua dự án của chúng tôi và tôi đã tìm thấy rất nhiều toán tử bậc ba trả về đúng hoặc sai. Ví dụ:Toán tử Ternary trả về "true: false". Tại sao?

return this.state == Cursor.CLOSED ? true : false; 

Không chỉ trong dự án của chúng tôi mà còn có nhiều mô-đun/thư viện làm việc này. Nó có vẻ dư thừa đối với tôi, vì tác giả có thể vừa viết nó như thế này:

return this.state == Cursor.CLOSED; 

Có phải mã hóa phòng thủ chống lại một số mã xác nhận trong Javascript không? Hoặc chỉ để được rõ ràng với những gì bạn đang trở về?

+3

dường như chỉ trả về true nếu trạng thái đóng? [Có gì sai với điều đó] (http://msdn.microsoft.com/en-us/library/ie/be21c7hw (v = vs.94) .aspx)? Câu hỏi của bạn là rất không rõ ràng. – Liam

+3

Tôi nghĩ rằng anh ta yêu cầu rằng nó có thể chỉ là 'return this.state == Cursor.CLOSED;' – Vic

+1

Với tôi nó có vẻ không cần thiết, nếu 'this.state == Cursor.CLOSED' nó đã đúng? – adeneo

Trả lời

6

Có phải mã hóa phòng thủ chống lại một số mã xác nhận trong Javascript không?

No. == không trả về giá trị boolean.

Điều kiện là hoàn toàn dư thừa và được coi là thực hành không tốt. Simplify it!

+0

Ngoài ra, nếu bạn cần chuyển đổi thành boolean trong javascript, cách phổ biến để làm điều đó là từ chối nó hai lần tức là '!! nonBool'. –

3

Nó khá không cần thiết, nhưng đó là một lỗi khá phổ biến † trong nhiều ngôn ngữ. Bởi vì toán tử bình đẳng được sử dụng gần như độc quyền trong điều kiện, một số lập trình viên ít hiểu biết hơn không biết và nhiều lập trình viên có kinh nghiệm đôi khi quên rằng nó thực sự có thể được sử dụng cho giá trị của nó. Chưa bao giờ có bất kỳ việc triển khai JavaScript chính nào có một điều kỳ quặc khiến việc này trở nên cần thiết.

† "Sai lầm" cảm thấy không tốt ở đây, vì mã chính xác, chỉ cần tiết lộ một cách không cần thiết. Nhưng tôi nghĩ rằng bạn biết những gì tôi có ý nghĩa.

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