gpt4 book ai didi

javascript IsNaN 和 0

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:45 26 4
gpt4 key购买 nike

我有一些返回意外结果的代码。

HTML:

<select name="cc_dropdown[0]" id="cc-dropdown-0" style="display: none;">
<option value="">Select a card</option>
<option value="0" selected="selected">***********8431</option>
<option value="-1">Use a new card</option>
</select>

JS:

var ccVal = parseInt($("#cc-dropdown-0 option:selected").val());
var errors = [];

if( ccVal == -1 ) {
if( $('#cc_number-'+bIdx).val().length <= 0 || !isValidCreditCardNo($('#cc_number-'+bIdx).val()) ) {
errors.push('Invalid Credit card Number');
}

if( $('#cc_name-'+bIdx).val().length <= 0 ) {
errors.push('Please provide the name on the credit card.');
}

if($('#cc_exp_month-'+bIdx).val() == ""){
errors.push('Please Select an Expiration Date.');
}

if($('#cc_exp_year-'+bIdx).val() == ""){
errors.push('Please Select an Expiration Date.');
}

if( !isValidZipcode($('#cc_zip-'+bIdx).val())){
errors.push('Please enter a valid zipcode.');
}
} else if ( ccVal == 'na' || ccVal == '' || isNaN(ccVal)) {
console.log("ccVal inside else if: " + ccVal);
console.log("ccVal type: " + typeof ccVal);
errors.push('Please select a credit card, or enter a new one.')
}
else {
console.log("else");
errors.push("Arg!");
}
console.dir(errors);

在这种情况下,ccVal 为 0,但它落入了 else if 语句。我希望只有当它根本不是数字时才会发生这种情况。预期的结果是它应该落入最后的 else 语句。这是一个带有结果的 JSFiddle:http://jsfiddle.net/n2Uy7/

谁能解释一下为什么会这样?如果它为 0,则它不应命中 ifelse if 语句。 JS 是否认为 0 是 NaN,即使 typeof 表明它是一个数字?

最佳答案

0 == ''true 所以 isNaN 部分甚至不会被评估。

使用===代替==

关于javascript IsNaN 和 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211621/

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