Javascript Typescript:仅测试Nan、null和未定义

Javascript Typescript:仅测试Nan、null和未定义,javascript,angular,typescript,Javascript,Angular,Typescript,我喜欢使用,以确保设置了变量且不会引发错误 然而,今天我有一个0值的变量对我有效。我需要确保它既不是NaN,也不是未定义的,是否真的没有short方法来完成它而不使用无聊的if(variable!==NaN&&variable!==undefined 如果这有帮助的话,我正在使用angular Thx.您可以使用isNan。对于未定义的和NAN值,它将返回true,但对于零值,它不会返回 const variable = undefined; if(isNaN(variable)){

我喜欢使用
,以确保设置了变量且不会引发错误

然而,今天我有一个
0
值的变量对我有效。我需要确保它既不是NaN,也不是未定义的,是否真的没有short方法来完成它而不使用无聊的
if(variable!==NaN&&variable!==undefined

如果这有帮助的话,我正在使用angular


Thx.

您可以使用isNan。对于
未定义的
NAN
值,它将返回
true
,但对于
值,它不会返回

const variable = undefined;

 if(isNaN(variable)){
   console.log('I am undefined / NAN'); 
 }else{
   console.log('I am something / zero');
}

要同时处理null,caz
isNaN(null)//false

检查
未定义、null、NaN的正确方法是

if(a==null | | Number.isNaN(a)){
//我们做到了!
}
请注意使用的是
Number.isNaN
,而不仅仅是
isNaN
。 如果您只使用了
isNaN
,那么您的检查将无法满足您对字符串或空对象等值的要求

if(a==null | | isNaN(a)){
//{}之所以出现,是因为'isNaN({})`是'true'`
//无法强制转换为数字的字符串
//还有一些有趣的事情
}

undefined和NaN都是伪值,因此可以使用
if(variable){}
这是否回答了您的问题?@JakubJanik,它也将为0返回false,这在这里是不需要的。仅供参考,
变量!==NaN
将始终为true,因为
NaN!=NaN
。要正确检查
NaN
,您需要使用
isNaN()
。根据已经提供的答案,如果(variable!=null&&!isNaN(variable))
。据我所知,这将是实现逻辑的最短方法。您应该使用
isNaN()
;)在比较中不能直接使用
NaN
。表达式
NaN==NaN
将始终返回
false
。在typescript中,
isNaN()
函数不接受
undefined
参数。错误消息是:
类型为“undefined”的参数不能分配给类型为“number”的参数。
您正确地使用
a==null
而不是
a==null
来检查
null
未定义的
。很好。
a==null
不可能在团队中工作,有人可能会认为我忘记了它,并添加了一个
=
这根本不可读。而且tslint可能会拒绝它。@Rolintocour,使用默认的角度tslint配置,它工作得很好。否则,您应该像这样执行smth:`a==null | a==undefined'。但我更喜欢缩短它。
let a = 'value';
if (isNaN(a) || a == null) {
    console.log('a is NaN or null, undefined');
} else {
    // business logic ;)
}