2012-12-18 26 views
6

Tôi đã JSLint phàn nàn tôi sử dụng || điều hành cho bên dưới mã,Sử dụng giấy phép '||' điều hành thay vì khai thác có điều kiện

query = ['browser' + (ieVersion ? ieVersion : 'UNKNOWN')] 

tôi đã cố gắng sử dụng || điều hành nhưng mà kết thúc trong kết quả sai,

query = ['browser' + ieVersion || 'UNKNOWN'] 
// => ['browserundefined'] 
+2

Hãy suy nghĩ được ưu tiên. –

+0

Xin lỗi, tôi đã thử với dấu ngoặc đơn. Sẽ cập nhật câu hỏi ngay bây giờ –

+0

Um. Nhưng nó hoạt động với parens, như trong câu trả lời bạn chấp nhận. –

Trả lời

6

Operator precedence là sai, hãy thử này:

query = ['browser' + (ieVersion || 'UNKNOWN')] 

không có dấu ngoặc thêm + điều hành mạnh mẽ hơn và động cơ Javascript đánh giá nó như:

query = [('browser' + ieVersion) || 'UNKNOWN'] 

ý rằng 'browser' + ieVersion là không bao giờ falsy vì vậy bạn sẽ không bao giờ thấy 'UNKNOWN'.

+0

Cảm ơn bạn đã làm việc. –

2

dấu ngoặc?

query = ['browser' + (ieVersion || 'UNKNOWN')] 
2

Bạn cần phải bọc biểu thức trong ngoặc đơn:

query = ['browser' + (ieVersion || 'UNKNOWN')] 
Các vấn đề liên quan