目标:
评估验证码
问题:
变量“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();
}
答案 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