经常写函数的代码我需要确保定义了某些值,或者我想立即返回false值。但是写整个如果块感觉打字太多了。是否可以写而不是:
function getSomethingByModel(model) {
var id = model.id;
if (! id) {
return;
}
// rest of the code
}
这样的事情:
function getSomethingByModel(model) {
var id = model.id || return;
// rest of the code
}
这是纯粹的美学问题,而非功能性问题。
答案 0 :(得分:1)
在某种程度上,您可以使用&&
运算符来完成此操作并避免繁琐的if
语句:
function getSomethingByModel(model) {
var id = model && model.id,
thing = id && getThingById(id),
otherThing = thing && getOtherThingFromThing(thing);
return otherThing || null; // or alternatively, just return otherThing;
}
如果该过程的任何阶段产生假值,逻辑将快速下降到最后并返回null
(或者如果您使用上面的替代return
语句,则会遇到第一个假值)。
答案 1 :(得分:0)
您可以在函数顶部定义所有属性(或者在任何地方,因为提升),然后使用赋值的副作用来返回。例如:
function getSomethingByModel(model) {
var id;
if(!(id = model.id)) return false;
// rest of the code
}