为什么parseInt无法在Javascript中正确测试数组?
鉴于: 及 为什么为什么parseInt无法在Javascript中正确测试数组?,javascript,parseint,Javascript,Parseint,鉴于: 及 为什么parseInt(obj)返回NaN,而parseInt(arr)返回21 我有一个函数,我要么传递一个int,要么传递一个散列类型对象,要么传递一个普通的数组。我希望parseInt为对象和数组返回NaN,从而简化参数检查。给出了什么?这是因为parseInt试图在解析为整数之前将第一个参数强制为字符串字符串(obj)返回“[对象对象]”且无法解析,但字符串([21,23])返回“21,23”,该字符串将解析为不可解析字符 见: 让inputStringbe?ToString
parseInt(obj)
返回NaN
,而parseInt(arr)
返回21
我有一个函数,我要么传递一个
int
,要么传递一个散列类型对象
,要么传递一个普通的数组
。我希望parseInt
为对象
和数组
返回NaN
,从而简化参数检查。给出了什么?这是因为parseInt
试图在解析为整数之前将第一个参数强制为字符串<代码>字符串(obj)返回“[对象对象]”
且无法解析,但字符串([21,23])
返回“21,23”
,该字符串将解析为不可解析字符
见:
让inputString
be?ToString(string
)
(将输入强制为字符串)
如果S包含的代码单元不是基数R数字,则Z是S的子串,由第一个这样的代码单元之前的所有代码单元组成;否则,设Z为S
(删除以非数字字符开头的字符串的任何部分,以便“21,23”
->“21”
)。这是正确的。数组的字符串表示是连接数组元素的结果。“这是因为parseInt试图将参数强制为字符串”?文档中的推断不是这样的:就是这样。编程中微妙的细微差别之多令人惊讶languages@AlMamun为什么你认为医生会说相反的话?非字符串参数转换为字符串,是吗?对我来说,文档说parseInt试图将值从字符串强制转换为数字。为什么要使用parseInt()
?我只会使用它进行两件事:(a)非基数10输入,和(b)以CSS“10px”
等已知格式解析输入字符串,其中我只需要10
部分。我相信Number([21,22])
返回NaN
,一元加运算符+[21,23]
@nnnnnn-为什么不呢<代码>如果isNaN(parseInt(argument1))…
。又快又容易。有什么害处?我不是在胡闹。我真的很好奇。如果argument1
是字符串“123abc”
,那不是一个有效的数字,但是parseInt(“123abc”)
返回123
。如果这是您真正想要的结果,那么当然可以使用parseInt()
,但根据我的经验,这是非常少有意义的(我已经给出了一个例子,说明它是有意义的)。如果要测试函数参数是否已经是一个数字(而不是一个对象或数组),可以使用typeof
运算符。@nnnnnn-我明白你的意思。
var obj={0:21,1:22}
var arr=[21,22]