π Disallow the bitwise XOR operator where exponentiation was likely intended.
πΌ This rule is enabled in the following configs: β
recommended, βοΈ unopinionated.
π‘ This rule is manually fixable by editor suggestions.
In JavaScript, ^ is the bitwise XOR operator, not exponentiation. Developers coming from languages like Lua, Julia, R, or MATLAB, or from math notation, often expect ^ to mean βto the power ofβ, so 2 ^ 32 silently evaluates to 34 instead of 4294967296. The actual exponentiation operator is **.
This rule flags ^ between two decimal integer literals, which is almost always this mistake. Hexadecimal, octal, and binary literals (such as 0xFF ^ 8) and any non-literal operands (such as flags ^ MASK) are ignored, since those are far more likely to be intentional bitwise XOR.
// β
const kibibyte = 2 ^ 10; // 8, not 1024
// β
const kibibyte = 2 ** 10;// β
const cube = 3 ^ 3; // 0, not 27
// β
const cube = 3 ** 3;