在javascript中,我们使用shortand notation if(input){}
来检查空或空输入。我们将Null, Undefined, false, 0, NAN, ""
弄错。我的要求是我希望任何数字都包括零,所以我创建了一个方法如下
function checkFalseExceptZero(value){
if( value !== undefined && value !== null && value !== false && value !== "" && value.length !== 0 ) return true;
else return false;
}
我已在上述方法中添加了所有可能的检查以获得所需的结果。我很好奇是否有任何快速,甜蜜,简短或更强大的方法来实现同样的目标?
答案 0 :(得分:2)
我的要求是我希望任何数字都能成真,包括 零所以我创建了一个方法如下
function checkFalseExceptZero(value){
if ( variable.constructor === Array) return !!value.length;
return value === 0 || !!value;
}
这是您的功能的较短版本。仅当值为true
或值为trully时,才会返回0
。
所以:
checkFalseExceptZero(null) ==> false;
checkFalseExceptZero(undefined) ==> false;
checkFalseExceptZero(false) ==> false;
checkFalseExceptZero("") ==> false;
checkFalseExceptZero(0) ==> true;
checkFalseExceptZero([]) ==> false;
checkFalseExcpetZero([1]) ==> true;
答案 1 :(得分:1)
一个简单易懂的答案。 JS中的三个等号不会转换类型以检查值是否与两个等号不同。
0 == false //true
0 === false //false, because 0 is a number and false is a boolean
因此,答案是,如果你想把它放在一个函数中:
<子>的 JS:强> 子>
function isNumber(v) {
return typeof v === "number"
}
该函数将检查变量的类型。因此,它实际上并不是比较值来确定结果。如果变量的类型被称为number
,则该函数仅返回true。
测试运行:
isNumber(0) //true
isNumber(false) //false
isNumber("0") //false
isNumber(undefined) //false
如果您想知道,typeof variable
将返回一个字符串。
答案 2 :(得分:1)
对于任何有效数字,包括0,JavaScript已公开isFinite函数。对于所有非数字以及无限和NaN
,返回false示例(摘自链接的mdn页面):
isFinite(Infinity); // false
isFinite(NaN); // false
isFinite(-Infinity); // false
isFinite(0); // true
isFinite(2e64); // true
isFinite("0"); // true, would've been false with the
// more robust Number.isFinite("0")