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) { … }
Hey, đó là một cái gì đó tôi không biết. – MrBoJangles
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') . –
Vì vậy, vì ~ là bitwise NOT, và trong JS 0-> TRUE! 0-> FALSE, và chỉ ~ -1-> 0 ... thông minh –