关于javascript:使用空对象作为条件if循环的参数

Using an empty object as a parameter to a conditional if loop

本问题已经有最佳答案,请猛点这里访问。

这和我一直想做的一样,

1
2
3
4
var obj = {};
if(obj){
//do something
}

我想做的是当对象为空时,条件应该失败。

我试过使用json.stringify(obj),但里面仍然有大括号("")。


您可以使用Object.keys并检查自己的密钥数组的长度。

1
2
3
4
5
6
7
8
9
10
11
function go(o) {
    if (Object.keys(o).length) {
        console.log(o.foo);
    }
}

var obj = {};

go(obj);
obj.foo = 'bar';
go(obj);


您可以使用检查对象是否为空,即它没有属性。

1
Object.keys(obj).length === 0

Object.keys()返回数组中对象的所有属性。

如果数组为空(.length === 0),则表示对象为空。


您可以使用Object.keys(myObj).length查找对象的长度,以确定对象是否为空。

工作实例

1
2
3
4
5
6
7
8
9
10
11
12
    var myObj = {};
    if(Object.keys(myObj).length>0){
      // will not be called
      console.log("hello");
    }


   myObj.test = 'test';

    if(Object.keys(myObj).length>0){
      console.log("will be called");
    }

请参见object.keys的详细信息