读取值或返回

时间:2014-05-11 19:06:45

标签: javascript

经常写函数的代码我需要确保定义了某些值,或者我想立即返回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
}

这是纯粹的美学问题,而非功能性问题。

2 个答案:

答案 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
}