为什么 parseInt 无法在 Javascript 中正确测试数组?
Why does parseInt fail to test Arrays properly in Javascript?
给定:
var obj={0:21,1:22}
和
var arr=[21,22]
为什么parseInt(obj)
returnNaN
,而parseInt(arr)
return却21
?
我有一个函数,我要传递一个 int
、一个散列类型 object
或一个普通的 array
。对于 object
和 array
,我期望 parseInt
到 return NaN
,从而简化参数检查。给出了什么?
这是因为 parseInt
试图在解析为整数之前将第一个参数强制转换为字符串。 String(obj)
returns "[object Object]"
无法解析,但是 String([21,23])
returns "21,23"
解析到 parseInt
无法解析的字符。
Let inputString
be ? ToString(string
).
(将输入强制转换为字符串)。
If S contains a code unit that is not a radix-R digit, let Z be the substring of S consisting of all code units before the first such code unit; otherwise, let Z be S.
(删除以 non-digit 字符开头的字符串的任何部分,因此 "21,23"
-> "21"
)。
给定:
var obj={0:21,1:22}
和
var arr=[21,22]
为什么parseInt(obj)
returnNaN
,而parseInt(arr)
return却21
?
我有一个函数,我要传递一个 int
、一个散列类型 object
或一个普通的 array
。对于 object
和 array
,我期望 parseInt
到 return NaN
,从而简化参数检查。给出了什么?
这是因为 parseInt
试图在解析为整数之前将第一个参数强制转换为字符串。 String(obj)
returns "[object Object]"
无法解析,但是 String([21,23])
returns "21,23"
解析到 parseInt
无法解析的字符。
Let
inputString
be ? ToString(string
).
(将输入强制转换为字符串)。
If S contains a code unit that is not a radix-R digit, let Z be the substring of S consisting of all code units before the first such code unit; otherwise, let Z be S.
(删除以 non-digit 字符开头的字符串的任何部分,因此 "21,23"
-> "21"
)。