Вы можете отключить ошибку (ну, они действительно должны назвать это предупреждение), выключая «Когда битовые операторы используются» вариант (верхний вариант в списке here — странно, в документации не говоря уже о всех побитовые операторы, к которым он относится); если вы это сделаете, код выше не приведет к ошибке.
Here's the rationale для предупреждения об использовании операторов поразрядных от оригинального инструмента JSLint (JSHint является дружелюбнее версией JSLint с большим количеством опций, чтобы выключить «ошибку», которые чисто стиль):
Побитовых Операторами
JavaScript не имеет целочисленного типа, но имеет побитовые операторы. Побитовые операторы преобразуют свои операнды с плавающей запятой на целые и обратно, поэтому они не так эффективны, как на C или других языках. Они редко используются в приложениях браузера. Сходство с логическими операторами может маскировать некоторые ошибки программирования. Опция bitwise
позволяет использовать следующие операторы: <<
>>
>>>
~
&
|
.
Не следует ли 'undef' быть' undefined'? – gdoron
@gdoron: Некоторые люди используют свою собственную копию 'undefined', если кто-то затеняет символ. Например, '(function (undef) {/ * ... code here ... * /})();'. Это паранойя, на мой взгляд, но ... :-) Кроме того, 'undefined' - довольно длинный идентификатор, поэтому некоторые люди могут делать это только для более короткого. –