2012-02-27 31 views
9

JSLint khẳng định rằng việc sử dụng phần nào của tôi là số exotic tilde operator trong ví dụ bên dưới là không mong muốn. Điều tôi thắc mắc là liệu đây có phải là hạn chế của JSLint không? hoặc chế độ nghiêm ngặt? hoặc còn thiếu gì nữa?JSLint không mong đợi các dấu ngã của tôi

(function() { 
    'use strict'; 
    if (~'foo'.indexOf('bar')) { 
     return 'wild accusations'; 
    } 
}()); 

Ngoài ra, tại sao tôi không nên sử dụng toán tử tìm kiếm đơn giản thay vì ví dụ phức tạp hơn bên dưới? Chắc chắn phải có lý do chính đáng để không?

if ('foo'.indexOf('bar') >= 0) { … } 
+3

Hey, đó là một cái gì đó tôi không biết. – MrBoJangles

+0

Bạn phải bật 'Toán tử bitwise khoan dung' (' ~ 'là toán tử bitwise). Một lý do tại sao không sử dụng nó: Tôi không nghĩ rằng nó thường được sử dụng và khó hiểu hơn (nhưng đó có thể chỉ là tôi). Nó không chỉ đòi hỏi sự hiểu biết về toán tử, mà còn về đại diện * số *, tức là '-1' được biểu diễn bằng tất cả các bit được đặt thành' 1' (và do đó phần bổ sung là '0' ->' false') . –

+0

Vì vậy, vì ~ là bitwise NOT, và trong JS 0-> TRUE! 0-> FALSE, và chỉ ~ -1-> 0 ... thông minh –

Trả lời

6

Từ JSLint Docs:

Bitwise Operators

JavaScript không có một loại nguyên, nhưng nó không có nhà khai thác Bitwise. Các toán tử bitwise chuyển đổi toán hạng của chúng từ điểm động sang số nguyên và ngược lại, do đó chúng không hiệu quả như trong C hoặc các ngôn ngữ khác. Chúng hiếm khi hữu ích trong các ứng dụng trình duyệt. Sự tương tự với các toán tử logic có thể che dấu một số lỗi lập trình. Tùy chọn bitwise cho phép sử dụng các toán tử sau: < < >> >>> ~ & |.

Bạn có thể kích hoạt nó dưới options

Cheers

+0

liên kết không hoạt động, cập nhật tốt hơn câu trả lời bằng giải pháp – sidgate

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