JavaScript检查多个未定义的对象

时间:2015-04-23 23:32:18

标签: javascript node.js

数据库变量的值为0,即----->数(0)。所以这是假的。因此!0似乎回归正确。

我有这个代码块

if(!(port && host && database)){
        throw new Error('one was undefined');
    }

由于某种原因,这个JS代码在它不应该抛出错误时,这似乎是因为数据库变量的值为0.我假设上面的代码块等同于:

if(!port || !host || !database){
      throw new Error('one was undefined');
  }

给定一个像0或1这样的值,或者另一个truthy / falsy值有没有办法创建速记代码来检查是否定义了至少一个多个值?

1 个答案:

答案 0 :(得分:3)

这样的事情怎么样?

function isDef(v) {
    return v !== undefined && v !== null;
} 

if(!(isDef(port) && isDef(host) && isDef(database))){
    throw new Error('one was undefined');
}

如果您的变量是undefinednull,那么它会将其视为“未定义”,否则会定义,即使其值为0

或者您可以创建一个将多个变量作为参数的函数,并检查它们是否都已定义:

function allDef() {
    for(var i = arguments.length; i--;) {
        if(arguments[i] === undefined || arguments[i] === null) 
            return false;
    }
    return arguments.length > 0 ? true : false;
}

if(!allDef(port, host, database)) {
    throw new Error('One was undefined');
}