如何判断JS中的假值

1,879 阅读1分钟

JavaScript 中的假值有 false、null、0、""、undefined和 NaN。如何判断一个值是不是其中之一呢?比如有这么一个需求:去掉数组中的所有“假值”

function bouncer(arr) {
}

bouncer([7, "ate", "", false, 9]); // -> [7, "ate", 9]

要怎么样实现这个方法才能完成需求呢?

答案就是 Boolean !!!

MDN上对此有重要说明:

如果需要,作为第一个参数传递的值将转换为布尔值。如果省略或值0,-0,null,false,NaN,undefined,或空字符串(""),该对象具有的初始值false。所有其他值,包括任何对象,空数组([])或字符串"false",都会创建一个初始值为的对象true。

不要用创建 Boolean 对象的方式将一个非布尔值转化成布尔值,直接将 Boolean 当做转换函数来使用即可,或者使用双重非(!!)运算符:

var x = Boolean(expression);     // 推荐
var x = !!(expression);          // 推荐
var x = new Boolean(expression); // 不太好

所有如果要实现上有的bouncer(arr)方法,可以这样写:

function bouncer(arr) {
    return arr.filter(item => {
        return Boolean(item);
    })
}

或者:

function bouncer(arr) {
    return arr.filter(item => {
        return !!item;
    })
}