在'if - else'语句中检查'else'中的相等性

时间:2016-11-04 21:01:01

标签: javascript

假设我们有这样的代码(js):

/**
 * @param  {String} type Could be only 'high' or 'low'
 * @return {String}
 */
function getSome(type) {
    if (type == 'high') {
        return 'This is high';
    } else if (type == 'low') {
        return 'This is low';
    }
}

如果此变体优于此(我不包括注释;它们是相同的)?:

function getSome(type) {
    if (type == 'high') {
        return 'This is high';
    } else {
        return 'This is low';
    }
}

我多次遇到类似的情况。通常我没有考虑最好的变体,并写了第一个。但现在我想决定将来使用哪种变体。

最后一个问题。如果我需要在else中检查变量的相等性,如果变量只有两个值且第一个值在if语句中给出?我也想知道使用函数注释如何影响答案。

3 个答案:

答案 0 :(得分:9)

如果只有as_prob = udf(lambda x: DenseVector([1 - x, x]), VectorUDT()) df.withColumn("prediction", as_prob(df["prediction"])) high值有效,请考虑第三种选择:

low

快速失败。这可以帮助您更快地发现错误。

答案 1 :(得分:2)

为什么不使用对象作为两个值的分组。对于未知类型,函数返回undefined或任何其他默认值。

function getSome(type) {
    return { high: 'This is high', low: 'This is low'}[type];
}

默认

function getSome(type) {
    return { high: 'This is high', low: 'This is low'}[type] || 'type not known.';
}

答案 2 :(得分:0)

使用switch运算符会更方便,特别是如果您有更多可能的值:

function getSome(type) {

    switch(type){

         case 'hight':
             return 'This is a high';
             break;
         case 'low':
             return 'This is a low';
             break;
         case 'third':
             return 'This is a third';
             break;
         default:
             throw new Error(type + ' is invalid.');
             break;
    }
}