Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么lodash.isNumber函数比typeof value=='更复杂;编号';_Javascript_Lodash - Fatal编程技术网

Javascript 为什么lodash.isNumber函数比typeof value=='更复杂;编号';

Javascript 为什么lodash.isNumber函数比typeof value=='更复杂;编号';,javascript,lodash,Javascript,Lodash,LodashisNumber函数有一个额外的条件来检查值是否为number。我不知道为什么需要这样做,在什么情况下仅仅使用typeof value==“number” function isNumber(value) { return typeof value == 'number' || (isObjectLike(value) && getTag(value) == '[object Number]') } 当Number()函数将创建一个数字原语时,Numbe

Lodash
isNumber
函数有一个额外的条件来检查值是否为number。我不知道为什么需要这样做,在什么情况下仅仅使用
typeof value==“number”

function isNumber(value) {
  return typeof value == 'number' ||
    (isObjectLike(value) && getTag(value) == '[object Number]')
}
Number()
函数将创建一个数字原语时,
Number()
构造函数将创建一个
Number
对象:

typeof Number(0) // 'number'
typeof new Number(0) // 'object'
Lodash检查两种情况。

从您的链接:

检查
是否分类为
数字
原语或对象

:

Number JavaScript对象是一个包装器对象,允许您处理数值。使用Number()构造函数创建Number对象。使用number()函数创建基本类型对象编号


可能是因为NaN的类型是“数字”。。?嗯,该函数似乎根本没有检测到
NaN
。\uu.isNumber(NaN)返回true如果您将对象原型设置为Number.prototype,则可能会产生这样一个问题:为什么有人希望将Number对象视为与Number原语相同的对象。基本构造函数(Number、String、Boolean)似乎是用来完成ECMAScript模型的,它们不打算用作构造函数。例如,
var a=新编号(3);a===3
返回
false
,这可能是意外的。@RobG True。但是,任何获取内部
[[NumberData]]
插槽值的操作仍然有效<代码>新号码(3)==3//true和
新号码(3)+新号码(5)//8
var n = new Number(3);
console.log(typeof n); // "object"
console.log(_.isNumber(n)); // true