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,cazisNaN(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 ;)
}