数据库变量的值为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值有没有办法创建速记代码来检查是否定义了至少一个多个值?
答案 0 :(得分:3)
这样的事情怎么样?
function isDef(v) {
return v !== undefined && v !== null;
}
if(!(isDef(port) && isDef(host) && isDef(database))){
throw new Error('one was undefined');
}
如果您的变量是undefined
或null
,那么它会将其视为“未定义”,否则会定义,即使其值为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');
}