是否有一个通用的JavaScript函数来检查变量是否有值,并确保它不是未定义的或空的?我有这个代码,但我不确定它是否涵盖所有情况:
function isEmpty(val){
return (val === undefined || val == null || val.length <= 0) ? true : false;
}
是否有一个通用的JavaScript函数来检查变量是否有值,并确保它不是未定义的或空的?我有这个代码,但我不确定它是否涵盖所有情况:
function isEmpty(val){
return (val === undefined || val == null || val.length <= 0) ? true : false;
}
当前回答
看看新的ECMAScript Nullish合并运算符
你可以想到这个功能-??运算符-作为处理null或undefined时“回退”到默认值的一种方式。
let x = foo ?? bar();
同样,上述代码与以下代码等效。
let x = (foo !== null && foo !== undefined) ? foo : bar();
其他回答
第一个评分最好的答案是错误的。若值未定义,则会在现代浏览器中引发异常。您必须使用:
if (typeof(value) !== "undefined" && value)
or
if (typeof value !== "undefined" && value)
我想这会让你的代码看起来更简单
检查变量是否未定义或为空
var a=undefined, b=null, c='hello world', d;
if(a !== (a ?? {})) { /**/ } // true
if(b !== (b ?? {})) { /**/ } // true
if(c !== (c ?? {})) { /**/ } // false
if(d !== (d ?? {})) { /**/ } // true
检查变量是否未定义或为空
var a=undefined, b=null, c='hello world', d;
if(a === (a ?? {})) { /**/ } // false
if(b === (b ?? {})) { /**/ } // false
if(c === (c ?? {})) { /**/ } // true
if(d === (d ?? {})) { /**/ } // false
最简短的答案可能是
val==null || val==''
如果将右侧更改为val==“”,则空数组将为false。证据
函数isEmpty(val){返回val==null | | val==“”}// ------------//测试// ------------var log=(name,val)=>console.log(`${name}->${isEmpty(val)}`);log('ull',null);log('未定义',未定义);日志('NaN',NaN);日志('“”,“”);日志(“{}”,{});日志('[]',[]);日志(“[1]”,[1]);日志(“[0]”,[0]);日志('[[]]',[[]]);log('true',true);日志('false',false);log('“true”',“true”);日志('“false”',“false”);log(“不确定性”,无限);log('-无限',-无限);日志('1',1);日志('0',0);日志('-1',-1);日志(“1”,“1”);日志(“0”,“0”);日志('“-1”',“-1”);//“void 0”案例console.log('---\n“true”为:',true);console.log('“void 0”为:',void 0);日志(void 0,void 0);//“void 0”是“undefined”-因此我们应该在这里得到TRUE
有关==的更多详细信息(此处来源)
奖金:为什么==比==
写得清晰易懂可理解的代码,使用可接受值的显式列表
val===undefined || val===null || val===''|| (Array.isArray(val) && val.length===0)
函数isEmpty(val){return val==未定义| | val==null | | val===“”| |(Array.isArray(val)&&val.length==0)}// ------------//测试// ------------var log=(name,val)=>console.log(`${name}->${isEmpty(val)}`);log('ull',null);log('未定义',未定义);日志('NaN',NaN);日志('“”,“”);日志(“{}”,{});日志('[]',[]);日志(“[1]”,[1]);日志(“[0]”,[0]);日志('[[]]',[[]]);log('true',true);日志('false',false);log('“true”',“true”);日志('“false”',“false”);log(“不确定性”,无限);log('-无限',-无限);日志('1',1);日志('0',0);日志('-1',-1);日志(“1”,“1”);日志(“0”,“0”);日志('“-1”',“-1”);//“void 0”案例console.log('---\n“true”为:',true);console.log('“void 0”为:',void 0);日志(void 0,void 0);//“void 0”是“undefined”-因此我们应该在这里得到TRUE
您可以始终使用loadash函数,例如_.isNil或_.isUndefined。它们非常容易使用。
尝试Boolean()和isNaN()(对于数字类型)检查变量是否有值。
函数isEmpty(val){返回类型的val==“number”?isNaN(val):!布尔值(val);}var emptyVals=[未定义,null,false,NaN,''];emptyVals.forEach(v=>console.log(isEmpty(v)));