如何在javascript中返回空对象,同时空对象等于布尔值false?

时间:2014-07-29 09:04:29

标签: javascript

我希望返回一个空对象,同时该对象在我的函数中等于boolean false。 显然,如果我像下面的代码那样返回{},它等于布尔值true,这不能满足我的要求。

decodeAndParse: function (jsonStr) {
  if (this.NaEptStr(jsonStr)) {
    var result;

    result = decodeURIComponent(jsonStr);
    result = JSON.parse(result);

    return result;
  }
  return false;
}

有没有可能解决这个问题?

非常感谢任何人可以帮我解决这个问题

2 个答案:

答案 0 :(得分:2)

您的代码可以是:

decodeAndParse: function (jsonStr) {
  return this.NaEptStr(jsonStr)? JSON.parse(decodeURIComponent(jsonStr)) : {};
}

然后在调用代码中你可能有类似的东西:

var obj = foo.decodeAndParse(jsonStr);

if (obj) {
  ...
}

你可以有一个简单的" emptyObj"测试如:

function isEmptyObject(obj) {
  return !!Object.keys(obj).length;
}

然后在来电者中:

if (isEmptyObject(obj)) {

如果您需要填充Object.keys,请参阅MDN。请注意,IE8仍具有显着的用户份额(根据netmarketshare,超过20%的桌面浏览器),因此请勿忽略非ES5浏览器。

答案 1 :(得分:0)

创建一个计算对象中的键的函数

function isNotEmpty(obj){
    var count = 0;
    for (var k in obj) {
        if (obj.hasOwnProperty(k)) {
           ++count;
        }
    }
   return count ? true : false;
}

并修改您的if

   if (isNotEmpty(this.NaEptStr(jsonStr)))

但检查对象中是否存在必填字段的最简单方法是

 if(this.naEpStr(jsonStr).myRequiredField)