Первая причина, которую я могу придумать, заключается в том, что typeof null
возвращает object
, что обычно не то, что вам нужно (поскольку null
- это не объект, а отдельный тип).
Однако Object.prototype.toString.call(null)
возвращает [object Null]
.
Но, как вы предполагаете, если вы ожидаете, что что-то будет строкой или другим типом, который хорошо работает с typeof
, я не вижу причин, почему вы можетене используйте typeof
(и я регулярно использую typeof
в этом случае).
Еще одна причина, по которой библиотеки, подобные тем, которые вы упоминаете, использует выбранный метод, может быть просто для согласованности.Вы можете использовать typeof
для проверки Array
, поэтому используйте другой метод и придерживайтесь его повсюду.
Для получения дополнительной информации Angus Croll имеет отличную статью об операторе typeof
.