gpt4 book ai didi

javascript - 小于和大于会产生意想不到的结果。

转载 作者:行者123 更新时间:2023-12-02 17:09:42 25 4
gpt4 key购买 nike

我是 Javascript 新手,我正在编写一个 Chrome 扩展来操作 Chrome Omnibox .

我实现了以下代码:

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});
}
});

目前,它的行为如下:

输入 07000001 并转到 PRIVATEURL2。

输入 00600000 并转到 PRIVATEURL1。

输入 1 并转到 PRIVATEURL1。

一切都符合预期。

但是,请输入:

04542226 & 被带到 PRIVATEURL2。

06000001 并被带到 PRIVATEURL2。

我不明白,04542226 不是 < 07000000,因此我应该被带到 PRIVATEURL1?

最佳答案

答案相当简单。

您的文本显然是一个字符串。比如说,“07000001”。当进行算术比较时,它会被转换为数字。哪个数字?让我们看看:

> text
"07000001"
> Number(text)
7000001

现在,这是正确的。不是你的数字文字,07000000

众所周知,您可以使用 0x 表示法将十六进制数写为文字:

> 0xFF
255

较少知道的是 0 前缀是八进制数字的字面表示法。 7000000 以 8 为基数表示数字 1835008:

> 07000000
1835008

因此,您应该使用 7000000 文字来代替:

> "04542226" < 07000000
false
> "04542226" < 7000000
true
<小时/>

奇怪的是,parseInt/Number 将处理十六进制表示法,但正如我们所见,它忽略前导零。 This is set by ECMAScript 5 standard.

请注意,如果您期望某个基数,您可以(并且应该)将第二个参数基数传递给函数。

关于javascript - 小于和大于会产生意想不到的结果。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24929068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com