Javascript 小于或大于产生意外结果。
我是Javascript新手,我正在编写一个Chrome扩展来操纵Javascript 我实现了以下代码:Javascript 小于或大于产生意外结果。,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我是Javascript新手,我正在编写一个Chrome扩展来操纵Javascript 我实现了以下代码: chrome.omnibox.onInputEntered.addListener( function(text) { console.log('inputEntered: ' + text); if (text < 07000000){ chrome.tabs.create({url:"PRIVATEURL1"+ text}); }
chrome.omnibox.onInputEntered.addListener(
function(text) {
console.log('inputEntered: ' + text);
if (text < 07000000){
chrome.tabs.create({url:"PRIVATEURL1"+ text});
}
if (text > 07000000){
chrome.tabs.create({url:"PRIVATEURL2"+ text});
}
});
chrome.omnibox.oninputender.addListener(
功能(文本){
console.log('inpuntered:'+文本);
如果(文本<07000000){
create({url:“PRIVATEURL1”+text});
}
如果(文本>07000000){
create({url:“PRIVATEURL2”+text});
}
});
目前,它的行为如下:
输入07000001并将其带到PRIVATEURL2
输入00600000并将其带到PRIVATEURL1
输入1并将其带到PRIVATEURL1
一切如期而至
但是,请输入:
04542226&将被带到PRIVATEURL2
06000001&被带到PRIVATEURL2
我不明白,04542226不是<07000000,因此我应该被带到私密处吗?答案很简单 显然,您的
文本是一个字符串。比如说,“07000001”
。当进行算术比较时,它被转换成一个数字。哪个号码?让我们看看:
> text
"07000001"
> Number(text)
7000001
现在,这是正确的。什么不是你的数字文字,07000000
大家或多或少都知道,可以使用0x
表示法将十六进制数写成文字:
> 0xFF
255
不太为人所知的是,0
前缀是八进制数的文字符号。基数8中的7000000是数字1835008:
> 07000000
1835008
因此,您应该使用7000000
literal:
> "04542226" < 07000000
false
> "04542226" < 7000000
true
>“04542226”<07000000
假的
> "04542226" < 7000000
真的
奇怪的是,parseInt
/Number
将处理十六进制表示法,但正如我们所看到的,它忽略了前导零
请注意,如果需要某个基数,则可以(也应该)向函数传递第二个参数radix。您的输入是字符串。这样使用它<例如,code>.charAt(N)
。