【问题标题】:Syntactic sugar JavaScript ( If statement) Error [closed]语法糖JavaScript(If语句)错误[关闭]
【发布时间】:2019-01-26 20:12:43
【问题描述】:

大多数情况下,我们使用 If else 语句并编写其语法糖等价物很容易。

If(condition){trueExecute}else{falseExecute}

它的语法糖是

condition?trueExecute:falseExecute

但我在下面的代码中遇到问题,因为我不想使用 else。最重要的是,我想在循环中使用 break 或 continue 函数。当我使用正常的 If 语句时;代码是完美的。但是每当我尝试使用语法糖来替换 if 时,它都无法执行。

是否有可能的解决方案,因为我找到的所有示例都没有解决这个问题

我的代码:

const NUMBER = 5346789123;
let anotherNew = NUMBER.toString();
let stringNumber = "";
let newString = anotherNew.length;

for(let numCount = 0; numCount < newString; numCount++){

if (anotherNew[numCount] == 4){

    console.log('we have removed 4');
    continue;
}
if (anotherNew[numCount] == 9){

    console.log('we have a break');
    break;
}
stringNumber += anotherNew[numCount];
console.log(stringNumber);  
}

我试图用语法糖来替换 if 语句,但它会导致错误

anotherNew[numCount] == 4? console.log('we have removed 4') continue;

anotherNew[numCount] == 9? console.log('we have a break') break;

【问题讨论】:

  • 条件运算符是if/elsenot 语法糖。条件运算符的计算结果为 表达式,而 if/else 执行 语句。它们适用于不同的事物。最好不要为了节省几个字符而滥用条件运算符,你会混淆你的代码的读者。

标签: javascript ecmascript-6 syntactic-sugar


【解决方案1】:

我尝试使用语法糖

The conditional operator 不是语法糖。它是具有特定目的的特定运算符,而您只是在错误地使用它。它用于有条件地产生一个值作为一个整体表达式,如果条件为真,则一个值,如果为假,则另一个值。

例如:

let x = input == 'one' ? 1 : 0;

此表达式根据条件生成一个整数值。

您要做的只是在条件为真时执行一段代码。而你已经有了这个工具,if 声明:

if (anotherNew[numCount] == 4){
    console.log('we have removed 4');
    continue;
}

这里的总体教训是不要试图让您的代码太聪明。您正在使用 if 语句来实现其准确和正确的目的。代码简单、明确,即使是粗略的一瞥也很容易理解。这些都是好事。不要用简洁而复杂的代码替换它们,这些代码以不直观的方式使用工具来节省一些击键。

【讨论】:

    【解决方案2】:
    anotherNew[numCount] == 4? console.log('we have removed 4') continue;
    
    anotherNew[numCount] == 9? console.log('we have a break') break;
    

    这不仅仅是语法糖。它是三元运算符或条件语句。它不能总是替换代码中的 if else 块。

    三元运算符执行语句,并根据或它们是否评估为truefalse 给出输出,而在 if/else 块中,我们可以给出我们想要的任何条件。这是个很大的差异。你不能盲目地用一个代替另一个。在使用它们时,您必须牢记一些规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多