是否有一个通用的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;
}
当前回答
function isEmpty(obj) {
if (typeof obj == 'number') return false;
else if (typeof obj == 'string') return obj.length == 0;
else if (Array.isArray(obj)) return obj.length == 0;
else if (typeof obj == 'object') return obj == null || Object.keys(obj).length == 0;
else if (typeof obj == 'boolean') return false;
else return !obj;
}
在ES6中,使用trim处理空白字符串:
const isEmpty = value => {
if (typeof value === 'number') return false
else if (typeof value === 'string') return value.trim().length === 0
else if (Array.isArray(value)) return value.length === 0
else if (typeof value === 'object') return value == null || Object.keys(value).length === 0
else if (typeof value === 'boolean') return false
else return !value
}
其他回答
如果您正在使用TypeScript,并且不想考虑“值为假”,那么这就是您的解决方案:
首先:从“util”导入{isNullOrUndefined};
然后:isNullOrUndefined(this.yourVariableName)
请注意:如下文所述,现在已弃用此选项,请改用value==undefined||value==null。裁判。
对于我的案例,我尝试了if null,“”!变量,但它不起作用。
查看下面的代码以从html字段获取文本
var status=$(this).text(); //for example (for my case)
如果状态变量中没有值(没有文本),我试图将值“novalue”设置为状态变量。
以下代码有效。
if(status == false)
{
status='novalue';
}
当没有找到satus变量的文本时,上面的代码将“novalue”分配给状态变量
function notEmpty(value){
return (typeof value !== 'undefined' && value.trim().length);
}
它还将检查空格(“”)以及以下内容:
null,未定义,NaN,空,字符串(“”),0,false
如果变量尚未声明,则无法使用函数测试未定义,因为会出现错误。
if (foo) {}
function (bar) {}(foo)
如果尚未声明foo,则两者都将生成错误。
如果要测试变量是否已声明,可以使用
typeof foo != "undefined"
如果您想测试foo是否已声明,并且它有一个值,您可以使用
if (typeof foo != "undefined" && foo) {
//code here
}
我非常喜欢的解决方案:
让我们定义一个空变量为空或未定义,或者如果它有长度,它为零,或者如果是一个对象,它没有键:
function isEmpty (value) {
return (
// null or undefined
(value == null) ||
// has length and it's zero
(value.hasOwnProperty('length') && value.length === 0) ||
// is an Object and has no keys
(value.constructor === Object && Object.keys(value).length === 0)
)
}
退货:
true:undefined,null,“”,[],{}false:true,false,1,0,-1,“foo”,[1,2,3],{foo:1}