Хороший хак, чтобы проверить, имеет ли obj.length
тип number
или нет. Вы видите, что оператор +
может использоваться для принудительного принуждения строк. Например:
alert(+ "3" + 7); // alerts 10
Это возможно, потому что оператор +
принуждает строку "3"
к числу 3
. Следовательно, результатом является 10
, а не "37"
.
Кроме того, JavaScript имеет два типа операторов равенства и неравенства:
3 === "3"
выражает false). 3 == "3"
выражает истину). Строгое равенство и неравенство не заставляют ценность. Следовательно, число 3
не равно строке "3"
. Нормальное равенство и неравенство действительно ценят ценность. Следовательно, число 3
равно строке "3"
.
Теперь приведенный выше код просто принуждает obj.length
к числу с помощью оператора +
и строго проверяет, имеет ли значение до и после принуждения одинаковы (т.е. obj.length
типа number
). Это логически эквивалентно следующему коду (только более кратким):
if (typeof obj.length === "number") {
// code
}