检查等式在'否则'if - else'声明

Check equality in 'else' in 'if - else' statement

本文关键字:else 声明 if 否则 检查      更新时间:2023-09-26

假设我们有这样的代码(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语句中给出?我还想知道如何使用函数注释可能会影响答案

如果只有highlow值有效,则考虑第三个选项:

function getSome(type) {
    if (type === 'high') {
        return 'This is high';
    } else if (type === 'low') {
        return 'This is low';
    } else {
        throw new Error(type + ' is invalid');
    }
}

快速失败。这可以帮助你更快地找到bug

为什么不使用一个对象作为两个值的分组呢?对于未知类型,函数返回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.';
}

使用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;
    }
}