祝大家感恩节快乐:
我已经在这个问题上绞尽脑汁了半个小时,但不太明白条件在哪里起作用。我想我已经把它记下来了,但只是想由专业人士来运行它。
(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/