At the risk of putting too many nails in the board... The rationale seems to propose that (0).clz() === 32, but the hypothetical uint64(0).clz() would return 64. That seems like a bad idea though. It's weird for two zero values to get such different behavior from the same method. It's weird for floating-point numbers to have a clz() method in the first place.
Since these are two different mathematical functions, they should have different names: Math.clz32(zero) would be 32 no matter what type of zero you pass it; the hypothetical Math.clz64(zero) would of course be 64. That way users can focus on the mathematical function being computed, rather than runtime types. Or maybe: flip the function around so that it returns the number of bits in the binary expansion of the value: Math.bitlen(15) === 4. This is just (32 - CLZ), so it effectively computes the same thing as clz. The advantage is that it extends naturally to integers of any size. -j _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss