首页 > 解决方案 > 为什么 lodash .isNumber 函数比 typeof value == 'number' 更复杂

问题描述

LodashisNumber函数有一个额外的条件来检查值是否为数字。我不确定为什么需要这样做,在什么情况下仅使用是不够的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

标签: javascriptlodash

解决方案


从您的链接:

检查是否value被归类为Number基元或对象

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

MDN - 编号

Number JavaScript 对象是一个包装对象,允许您使用数值。Number 对象是使用 Number() 构造函数创建的。使用 Number() 函数创建原始类型对象编号。


推荐阅读