Nodejs webstorm里面关于return返回空值的警告的一个解释
Nodejs webstorm里面关于return返回空值的警告的一个解释
Unnecessary return statements are those which return no value and occur just before the function would have “fallen through” to the bottom.
这是对第二个return的warn,不能这样用呢,程序如下:
exports.consumeAmountGetReward = function (user,callback) {
var activity = QActivity.getValidActivity('consumeAmount'),
config = QSetting.current(),
localize = config.localize;
if(!activity){
callback(localize['20088']);
return;
}
if(user.consumeAmountRemainCount <= 0){
callback(localize['20076']);
return;
}else{
user.consumeAmountRemainCount -= 1;
user.consumeAmountCrystal -= activity.data.crystal;
businese.UserManager.saveUser(user, function (err) {
if(err){
callback(err);
}else{
callback(null,outputConsumeAmountActivity(user,activity));
}
});
}
};
Node.js WebStorm 里面关于 return
返回空值的警告的一个解释
在使用 Node.js 和 WebStorm 开发时,你可能会遇到一些关于 return
的警告。这些警告通常提示你在某些情况下,return
语句返回的是空值(即没有明确的返回值)。这种情况通常出现在函数即将自然结束的时候。
示例代码
假设我们有一个函数 consumeAmountGetReward
,它用于处理用户的消费奖励逻辑:
exports.consumeAmountGetReward = function (user, callback) {
var activity = QActivity.getValidActivity('consumeAmount'),
config = QSetting.current(),
localize = config.localize;
if (!activity) {
callback(localize['20088']);
return;
}
if (user.consumeAmountRemainCount <= 0) {
callback(localize['20076']);
return;
} else {
user.consumeAmountRemainCount -= 1;
user.consumeAmountCrystal -= activity.data.crystal;
businese.UserManager.saveUser(user, function (err) {
if (err) {
callback(err);
} else {
callback(null, outputConsumeAmountActivity(user, activity));
}
});
}
};
解释
在这段代码中,WebStorm 可能会警告你第一个 return
语句是不必要的,因为它只是简单地结束了函数的执行,并没有返回任何值。具体来说,第一个 return
在 if (!activity)
条件满足时执行,此时函数已经通过 callback
调用了外部代码,因此不需要额外的 return
语句。
修改后的代码
你可以移除这些不必要的 return
语句以避免警告:
exports.consumeAmountGetReward = function (user, callback) {
var activity = QActivity.getValidActivity('consumeAmount'),
config = QSetting.current(),
localize = config.localize;
if (!activity) {
callback(localize['20088']);
}
if (user.consumeAmountRemainCount <= 0) {
callback(localize['20076']);
} else {
user.consumeAmountRemainCount -= 1;
user.consumeAmountCrystal -= activity.data.crystal;
businese.UserManager.saveUser(user, function (err) {
if (err) {
callback(err);
} else {
callback(null, outputConsumeAmountActivity(user, activity));
}
});
}
};
总结
在编写 Node.js 代码时,确保你的 return
语句是有意义的。如果函数的执行已经通过其他方式(如 callback
)完成,那么 return
语句可能是多余的。通过移除这些不必要的 return
语句,可以使代码更简洁,同时也可以避免开发工具中的警告。
因为你的那个被警告的 return 即使不加,后面也不会执行了。webstorm 很智能,就告诉你这个 return 不必要。
你把那个 return 下面的 else block 给去掉的话,提示也就消失了。
在WebStorm中,当你在一个函数中使用return
语句并且不返回任何值时(即return;
),IDE会发出警告,因为它认为这是一个不必要的return
语句。这通常是因为在该位置之后没有其他代码执行,函数会自动返回undefined
。
在你的代码示例中,第一个return
语句后面没有其他代码,因此可以被认为是不必要的。第二个return
语句后面有其他代码执行,因此它不是不必要的。你可以修改代码以消除这些警告:
exports.consumeAmountGetReward = function (user, callback) {
var activity = QActivity.getValidActivity('consumeAmount'),
config = QSetting.current(),
localize = config.localize;
if (!activity) {
callback(localize['20088']);
return; // 这个return是必要的
}
if (user.consumeAmountRemainCount <= 0) {
callback(localize['20076']);
return; // 这个return也是必要的
}
user.consumeAmountRemainCount -= 1;
user.consumeAmountCrystal -= activity.data.crystal;
business.UserManager.saveUser(user, function (err) {
if (err) {
callback(err);
} else {
callback(null, outputConsumeAmountActivity(user, activity));
}
});
};
在这个修改后的版本中,所有的return
语句都是必要的,因为它们在某些条件下终止了函数的执行。WebStorm应该不会再对这些return
语句发出警告。