验证过程中“NaN”的数据类型

时间:2011-07-10 22:49:06

标签: jquery

目标:
评估验证码

中的指定值

问题:
变量“currentValue”可以检索名为“NaN”的值。我不知道在我的验证过程中应该应用哪种数据类型。

根据我之前的测试,NaN既不是字符串,也不是int或类似的东西。

什么数据类型是NaN?

    var ddd = $('#field_timmar').val();
    //datac= $('#field_timmar').val();
    //len = currentValue.length;

    var currentValue = parseInt(ddd);


    // Validating message
    if(currentValue <= 0)
    {
        $('#field_timmar_error1').show();

        $('#field_timmar_error2').hide();
        $('#field_timmar_error3').hide();

        nonError = false;
    }
    else if(currentValue == "NaN" && ddd != "")
    {
        $('#field_timmar_error2').show();

        $('#field_timmar_error1').hide();
        $('#field_timmar_error3').hide();

        nonError = false;
    }
    else if(currentValue == "NaN" && ddd == "")
    {
        $('#field_timmar_error3').show();

        $('#field_timmar_error1').hide();
        $('#field_timmar_error2').hide();

        nonError = false;
    }       
    else
    {
        $('#field_timmar_error1').hide();
        $('#field_timmar_error2').hide();
        $('#field_timmar_error3').hide();
    }   

4 个答案:

答案 0 :(得分:2)

NaN的数据类型实际上是Number,但由于其特殊状态,无法直接与任何其他值进行比较。有一个函数isNaN可以让你测试一个数字是否为NaN:

if (isNaN(currentValue)) {
  ...
}

答案 1 :(得分:0)

NaN是NaN的数字。当转换为String时,它通常输出“NaN”,但它不等于“NaN”。 NaN等于零,包括NaN。

对你来说够简单吗?

测试NaN的最简单方法是方法isNaN

console.log( isNaN( Number( "quack" ) ) ) // true
console.log( isNaN( Number( "1" ) ) ) // false

我曾经遇到一个实现故障,其中NaN通过错误连接生成:1 +“threeve”当需要的是“1”+“threeve”时,其他时候是通过上面的例子,或者像下面这样的情况:

// value is undefined
var obj = {}
console.log( 1 + obj.notDefinedProperty )
var arr = []
console.log( 1 + arr[ 1 ] )

// non-castable
var obj = {}
obj++;// also works for +=
console.log(obj)
"string" * 1

答案 2 :(得分:0)

NaN表示not-a-number.you可以使用isNaN()函数测试它:

console.log( isNaN(123) );
console.log( isNaN("ABC") );

答案 3 :(得分:0)

检查值是否为Nan的其他方法?

value !== value