parseInt()表现不同

时间:2014-07-30 07:41:16

标签: javascript

我在javascript中使用以下条件来根据邮政编码过滤我的选项。

if (parseInt(postcode, 10) > 99 && parseInt(postcode, 10) < 10000 && postcode != '') {
    // code goes here...
}

其中邮政编码可以是任何澳大利亚邮政编码。除了0852 / 0840 / 4840之类的随机邮政编码外,它适用于所有人。我不确定它是否适用于我刚检查过随机邮政编码的所有邮政编码。

1 个答案:

答案 0 :(得分:0)

我刚检查过,它对你提到的邮政编码非常好。也许在其他浏览器中存在问题 - 我没有检查任何保存或最新的Firefox。

无论哪种方式,请确保parseInt返回您的期望。你可以这样做:

var parsed = parseInt(postcode, 10);
if (parsed > 99 && parsed < 10000 && postcode != '') {
    // code goes here...
} else {
    console.log(postcode, parsed);
}

上面会将不良值打印到控制台,你可能会发现错误。也许他们会回归NaN?也许输入没有被修剪?

顺便说一下,我会改变你的状况。 postcode != ''是一个狭隘的案例;怎么输入'abc'怎么办?在通过NaN之后,所有这些值都为parseInt,所以您也可以这样做:

var parsed = parseInt(postcode, 10);
if (!!parsed && parsed > 99 && parsed < 10000) {
    // code goes here...
}