@Input() a: number;
// Check of null or undefined
if (a)
// do stuff
对于通常的检查,值0也将被认为是false,并且变量将不通过if。
周围已经有很多问题,但我找不到任何处理值零的东西。
有没有类似于typescript的a?.b
,但对于简单的类型?
明显的解决方案是冗长(当您需要检查多个值时,在您的条件下它很快变得拥挤)。
if (a !== undefined && a !== null)
// do stuff
我也想到了这个,有点短,但读起来不太明显
if (a || a === 0)
// do stuff
避免代码变得拥挤是一个很好的目标。您可以定义自己的函数,如下所示:
function isBlank(s) {
return (undefined === s || null === s || "" == s.trim());
}
function isZero(s) {
return (!isBlank(s) && "0" == s.trim());
}
您的原始代码块更改如下,并且同样易于阅读:
// Check of null or undefined
if (isZero(a))
// do stuff
关于JavaScript中假值的更多信息,这里有一些很好的资源:
https://stackabuse.com/javascript-loose-equality-operator-vs-strict-equality-operator/
JavaScript中的所有假值
设置一些附加值:
https://jsfiddle.net/Lr98kzsa/