用三元运算符求和 我认为自己是一个相当好的程序员,但是JavaScript总是让我有新的东西……/P>

用三元运算符求和 我认为自己是一个相当好的程序员,但是JavaScript总是让我有新的东西……/P>,javascript,Javascript,下面是三个片段- 代码片段1:我正在尝试使用三元速记法,根据某些条件得到两个值的内联求和。对于所有条件,此代码段将总和设为“X”=0 片段2:当我把它分成两个和时,我得到了正确的结果 代码段3:当我使用代码段1时,在两个和的周围用括号括起来,我得到了正确的结果 我理解代码段2和3为什么有效,但我不明白代码段1为什么无效。谁能给我解释一下吗?求你了 设w=50; //片段1 对于(设i=0;i这是由于。条件运算符的优先级(4)低于加法/串联(14),因此此处的行: let x = w*2*i +

下面是三个片段-

  • 代码片段1:我正在尝试使用三元速记法,根据某些条件得到两个值的内联求和。对于所有条件,此代码段将总和设为“X”=0
  • 片段2:当我把它分成两个和时,我得到了正确的结果
  • 代码段3:当我使用代码段1时,在两个和的周围用括号括起来,我得到了正确的结果
  • 我理解代码段2和3为什么有效,但我不明白代码段1为什么无效。谁能给我解释一下吗?求你了

    设w=50;
    //片段1
    对于(设i=0;i这是由于。条件运算符的优先级(4)低于加法/串联(14),因此此处的行:

    let x = w*2*i + (i<2)?w*0:w*2;
    
    设x=w*2*i+(i这是由于。条件运算符的优先级(4)低于加法/串联(14),因此此处的行:

    let x = w*2*i + (i<2)?w*0:w*2;
    

    让x=w*2*i+(如果第一个类似于
    (w*2*i+(查看
    前面的所有内容?
    是分组的。您可能是指
    (i<2?w*0:w*2);
    (在代码段3中使用-
    (i<2)
    周围的括号在这里是多余的)@ggorlen我完全错过了。我很愚蠢。正式地说。现在我明白了为什么它不起作用。是的,我知道运算符优先级和三元运算符的优先级低于算术运算,但你的推理在这里更有意义。首先是像
    (w*2*I+(查看
    前面的所有内容?
    都已分组。您的意思可能是
    (i<2?w*0:w*2);
    (如代码段3中所用-
    (i<2)
    周围的括号在这里是多余的)@ggorlen我完全错过了。我很愚蠢。正式地说。现在我明白了为什么它不起作用。是的,我知道运算符优先级和三元运算符的优先级低于算术运算,但你的推理在这里更有意义。
    let x = w*2*i +  (i<2)?w*0:w*2;
    let x = w*2*i + ((i<2)?w*0:w*2); // incorrect