我正在使用转换和比较两个字符串值
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).
请注意,在处理八进制表示时,您甚至不应该依赖此解释:
ECMAScript 5删除八进制解释
函数parseInt的ECMAScript 5规范不再允许实现将以0字符开头的字符串视为八进制值.ECMAScript 5指出:
parseInt函数根据指定的基数产生一个整数值,该值由字符串参数的内容解释决定.字符串中的前导空格被忽略.如果radix未定义或为0,则假定为10,除非数字以字符对0x或0X开头,在这种情况下假设基数为16.如果radix为16,则number也可以选择以字符对0x或0X开头.
这与ECMAScript 3不同,后者不鼓励但允许八进制解释.
由于许多实现在2011年都没有采用此行为,并且由于必须支持旧版浏览器,因此请始终指定基数.
简单地说
总是指定一个基数