为什么在Javascript中没有> =(大于或等于)比较工作?

Ton*_*nas 3 javascript comparison-operators

我在这里错过了什么?这个脚本对我来说很合适.

但出于某种原因,当我发送一个02897(或任何应该是罗德岛)的邮政编码时,它会返回新罕布什尔州.除了Javascript开发人员可能拥有的政治信仰(确定大多数人更愿意住在新汉普尔而不是罗德岛),为什么这个脚本不起作用?

新泽西州和阿拉巴马州的工作正常.为什么罗德岛不能得到一些爱?

function getState(zip) {
    var thiszip = zip; // parseInt(zip);
    if (thiszip >= 35000 && thiszip <= 36999) {
            thisst = 'AL';
            thisstate = "Alabama";
            }
    else if (thiszip >= 03000 && thiszip <= 03899) {
        thisst = 'NH';
        thisstate = "New Hampshire";
        }
    else if (thiszip >= 07000 && thiszip <= 08999) {
        thisst = 'NJ';
        thisstate = "New Jersey";
        } 
    else if (thiszip >= 02800 && thiszip <= 02999) {
        thisst = 'RI';
        thisstate = "Rhode Island";
        }
    else {
        thisst = 'none';
    }
   return thisst;
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*her 9

03000等于1536小数.

这是因为前导零导致该值被解释为八进制.

因为最后你正在进行数值比较,为什么不在比较中省略前导零?

else if (thiszip >= 3000 && thiszip <= 3899) {
Run Code Online (Sandbox Code Playgroud)

否则,使用parseInt并声明小数:

else if (thiszip >= parseInt(03000, 10) && thiszip <= parseInt(03899, 10)) {
                                 // ^^^ pass radix parameter          ^^^ pass radix parameter
Run Code Online (Sandbox Code Playgroud)

你可能想要parseInt传入的值:

var thiszip = parseInt(zip, 10);
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt