我希望返回一个空对象,同时该对象在我的函数中等于boolean false。 显然,如果我像下面的代码那样返回{},它等于布尔值true,这不能满足我的要求。
decodeAndParse: function (jsonStr) {
if (this.NaEptStr(jsonStr)) {
var result;
result = decodeURIComponent(jsonStr);
result = JSON.parse(result);
return result;
}
return false;
}
答案 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)