In underscore.js source in many places I came across
if (obj.length === +obj.length)
Can someone explain, why do they use it?
It's another way of writing if (typeof obj.length == 'number')
. Why they do it that way, it's anyone's guess. Probably trying to be clever at the expense of readability. Which is not too uncommon these days, unfortunately...
Although it might be so that it can be compressed more by minifiers (YUI Compressor, Closure Compiler, UglifyJS, etc):
(a.length===+a.length)
vs (typeof a.length=='number')
Doing it their way would save 5 bytes, each instance.
This tests if obj
's length
property is a number.
The unary +
operator converts its operand to a number, and the strict equality operator compares the result with the original length
property without performing type coercion.
Therefore, the expression will only be true
if obj.length
is an actual number (not e.g. a string that can be converted to a number).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With