JSLint reports unexpected use of '&' and '|' -- I'd like to clean this

Zhami picture Zhami · Jun 14, 2010 · Viewed 21.7k times · Source

I'm trying to get my Javascript code 100% JSLint clean.

I've got some JS code that I've lifted from elsewhere to create a UUID. That code has the following line:

s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1);

This line incites JSLint to generate two error messages:

1) Unexpected use of '&'
2) Unexpected use of '|'

I don't understand why -- I'd appreciate counsel regarding how to recode to eliminate the error message.

Answer

Ben Zotto picture Ben Zotto · Jun 14, 2010

The reason "why" is that actual bitwise operations are exceedingly rare in JS, and those operators appearing in JS code almost always are a typo for the boolean versions (&&, ||). That's why JSLint cares. This is a legit use of bitwise ops though. I believe you can silence the warning with the bitwise flag:

/*jslint bitwise: true */