gpt4 book ai didi

javascript - 是否可以在条件(三元)内放置 switch 语句?

转载 作者:行者123 更新时间:2023-12-02 07:20:28 25 4
gpt4 key购买 nike

我对使用条件(三元)运算符真的很陌生。是否可以在此运算符中放置 switch 语句?

这是我尝试过的:

function find(cn, romanNum) {
if (cn >= 1 && cn <= 3) {
return repeatString(romanNum[2], cn);
}
cn > 5 && cn < 9 ? return romanNum[1] + repeatString(romanNum[2], cn - 5) : switch(cn) {
case 4:
return romanNum[2] + romanNum[1];
case 5:
return romanNum[1];
case 9:
return romanNum[2] + romanNum[0];
}
}

我知道我做错了什么,但它是什么?每个人都在某个时间点对某事感到陌生。

错误:
  • 需要一个标识符,而是看到 'return' .
  • 预计 ':'而是看到了'romanNum' .
  • 缺少分号。
  • 预计 '}'匹配 '{'从第 58 行开始,而是看到了 ':'

  • 这是正确的 es5 代码:
    function find(cn, romanNum) {
    if (cn >= 1 && cn <= 3) {
    return repeatString(romanNum[2], cn);
    } else if (cn == 4) {
    return romanNum[2] + romanNum[1];
    } else if (cn == 5) {
    return romanNum[1];
    } else if (cn == 9) {
    return romanNum[2] + romanNum[0];
    }
    if (cn > 5 && cn < 9) {
    return romanNum[1] + repeatString(romanNum[2], cn - 5);
    }
    }

    帮助?

    最佳答案

    tl;博士:有点,但你不应该这样做因为它不那么可读。
    始终保持代码简短而冗长。

    长答案:
    您可以将您的开关包装在一个立即调用的匿名函数中。

    const a = 20;
    const condition = a > 100;
    const result = condition ? true : ( () => {
    switch ( a ) {
    case 11: return 22;
    case 20: return 21;
    default: return 100;
    }
    } )();

    console.log( result );


    但这不仅更复杂,而且更难阅读。

    最好使用详细的编码风格。
    在你的情况下,这样的事情会更干净,更具可读性:

    function test( a ) {
    const condition = a > 100;

    if ( condition ) {
    return true;
    }

    switch ( a ) {
    case 20: return 21;
    default: return 100;
    }
    }

    console.log( test( 20 ) );

    关于javascript - 是否可以在条件(三元)内放置 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488109/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com