javascript - 这个 JavaScript 三元运算符是如何工作的

标签 javascript conditional-statements ternary-operator

祝大家感恩节快乐:

我已经在这个问题上绞尽脑汁了半个小时,但不太明白条件在哪里起作用。我想我已经把它记下来了,但只是想由专业人士来运行它。

(i%3)?(i%5)?i:'Buzz':(i%5)?'Fizz':'FizzBuzz'

它分为以下内容:

    if ((i%3) == false) {
        if ((i%5) == false) {
            console.log("FizzBuzz");
        } else {
            console.log('Fizz');
        }
    } else {
        if ((i%5) == false) {
            console.log("Buzz");
        } else {
            console.log(i);
        }
    }

我假设三元运算符按以下方式分组(我习惯以典型的结果?a:b方式看到三元运算符,所以额外的结果和条件让我困惑)

(i%3)?
    //if the condition is not a multiple of 3
    //check if it is a multiple of 5
    //if it isn't, log the number
    //otherwise log "Buzz" 
    (i%5)?i:'Buzz'
    //if the condition is a multiple of 3
    //check if it is a multiple of 5
    :(i%5)?
        //if it is log "Fizz", 
        //otherwise i is a multiple of 3 & 5 -
        //log "FizzBuzz"
        'Fizz':'FizzBuzz

我真的很感谢任何量化的帖子和/或澄清。 再次感谢。

最佳答案

三元运算符有 right-to-left associativity ,这意味着表达式与

相同
(i%3) ? ((i%5) ? i : 'Buzz') : ((i%5) ? 'Fizz' : 'FizzBuzz')

或者它以如下方式崩溃

1st ? ( 2nd ) : ( 2nd )

事实上,两个 2nd 片段也是三元的,这对第一个片段的过程没有影响。

关于javascript - 这个 JavaScript 三元运算符是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13522739/

相关文章:

actionscript-3 - ActionScript 三元运算符

javascript - 使用 jQuery 模拟 CMYK 印版偏移

C 条件增量

cout 中的 C++ if-else 语句

java - for 循环内的条件问题 (JAVA)

mysql - 我可以设置一个条件来过滤我的 COUNT 子句吗?数据库

java - 三元运算符 & 是什么意思

javascript - Rails、Ajax 和 bool 值;无法取消选中框

javascript - 来自 jquery 注册的纯 JavaScript 的调用事件

javascript - Express MongoDB 和 Mongoose 使用 findByIdAndRemove() 删除然后重定向