如何将两个字符串值比较为整数?

Anj*_*ana 6 javascript

我正在使用转换和比较两个字符串值

if (parseInt(x)!=parseInt(y)) {
Run Code Online (Sandbox Code Playgroud)

问题是如果值x="9"y="09"测试返回false.

我怎样才能解决这个问题?

Den*_*ret 15

用这个 :

if(parseInt(x, 10)!=parseInt(y, 10))
Run Code Online (Sandbox Code Playgroud)

如果你没有精确的基数,"09"被解析为八进制(这给出0).

有关parseInt的MDN文档

请注意,在处理八进制表示时,您甚至不应该依赖此解释:

ECMAScript 5删除八进制解释

函数parseInt的ECMAScript 5规范不再允许实现将以0字符开头的字符串视为八进制值.ECMAScript 5指出:

parseInt函数根据指定的基数产生一个整数值,该值由字符串参数的内容解释决定.字符串中的前导空格被忽略.如果radix未定义或为0,则假定为10,除非数字以字符对0x或0X开头,在这种情况下假设基数为16.如果radix为16,则number也可以选择以字符对0x或0X开头.

这与ECMAScript 3不同,后者不鼓励但允许八进制解释.

由于许多实现在2011年都没有采用此行为,并且由于必须支持旧版浏览器,因此请始终指定基数.

简单地说

总是指定一个基数

  • @poke - 它不被解释为小数.它被解释为八进制,但由于它不是有效的八进制数,它只返回"0". (2认同)