Почему функция lodash .isNumber сложнее, чем typeof value == 'number' - PullRequest
1 голос
/ 19 июня 2019

Функция Lodash isNumber имеет дополнительное условие для проверки, является ли значение числом.Я не уверен, почему это требуется и в каком случае недостаточно просто использовать typeof value == 'number'

function isNumber(value) {
  return typeof value == 'number' ||
    (isObjectLike(value) && getTag(value) == '[object Number]')
}

https://github.com/lodash/lodash/blob/aa1d7d870d9cf84842ee23ff485fd24abf0ed3d1/isNumber.js

Ответы [ 2 ]

3 голосов
/ 19 июня 2019

По вашей ссылке:

Проверяет, классифицируется ли value как Number примитив или объект .

var n = new Number(3);
console.log(typeof n); // "object"
console.log(_.isNumber(n)); // true

MDN - номер :

Объект Number JavaScript представляет собой объект-оболочку, позволяющий работать с числовыми значениями. Объект Number создается с помощью конструктора Number (). Номер объекта типа примитива создается с помощью функции Number ().

3 голосов
/ 19 июня 2019

Хотя функция Number() создаст числовой примитив, конструктор Number() создаст объект Number:

typeof Number(0) // 'number'
typeof new Number(0) // 'object'

Проверка Лодаша для обоих случаев.

...