Javascript检查除零之外的false语句的最佳方式

时间:2015-07-05 09:38:33

标签: javascript performance if-statement

在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;
}

我已在上述方法中添加了所有可能的检查以获得所需的结果。我很好奇是否有任何快速,甜蜜,简短或更强大的方法来实现同样的目标?

3 个答案:

答案 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")