Приятно проверить, относится ли 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
}