为什么parseInt无法在Javascript中正确测试数组?

dgo*_*dgo 4 javascript parseint

鉴于:

var obj={0:21,1:22}
Run Code Online (Sandbox Code Playgroud)

var arr=[21,22]
Run Code Online (Sandbox Code Playgroud)

为什么要parseInt(obj)回归NaN,但要parseInt(arr)回归21

我有一个函数,我要么传递int一个哈希类型object或一个普通的array.我期待parseInt重返NaN两个objectarray,从而简化参数检查.是什么赋予了?

nra*_*itz 8

这是因为parseInt在解析为整数之前,尝试强制将第一个参数强制转换为字符串.String(obj)返回"[object Object]"并且无法解析,但String([21,23])返回"21,23",parseInt解析直到它到达不可解析的char.

parseInt规格:

我们inputString呢?ToString(string).

(将输入强制转换为字符串).

如果S包含的代码单元不是radix-R数字,则让Z为S的子字符串,由第一个这样的代码单元之前的所有代码单元组成; 否则,让Z为S.

(删除以非数字字符开头的字符串的任何部分,所以"21,23"- > "21").