Javascript 为什么(true?false?';1';:';2';:';3';)返回2?
从以下JavaScript返回Javascript 为什么(true?false?';1';:';2';:';3';)返回2?,javascript,ternary-operator,Javascript,Ternary Operator,从以下JavaScript返回2的逻辑是什么 true ? false ? '1' : '2' : '3' 查一下接线员 由于三元运算符是右关联的,因此将上述表达式解析为: true ? (false ? '1' : '2') : '3' 表示首先执行最右边的运算符 在我们的例子中,最右边的三元运算符是内部的,因此首先执行。这样想: 如果为true,则结果为false正确?错误 如果为false,则结果为1错误?“1' 否则,结果是2:“2” 最后,我猜这是编译的,因为它将语句分组如下:tr
2
的逻辑是什么
true ? false ? '1' : '2' : '3'
查一下接线员
由于三元运算符是右关联的,因此将上述表达式解析为:
true ? (false ? '1' : '2') : '3'
表示首先执行最右边的运算符
在我们的例子中,最右边的三元运算符是内部的,因此首先执行。这样想:
true?(假?'1':'2'):'3'
。因此,如果将第一个true
转换为false
,它应该返回3希望这有助于。。。如果你仍然不明白,请问 仅在此添加,这是表达式使用
if-else
语句进行翻译的方式
// Translated:
if (true) {
if (false) {
console.log(1)
}
else {
console.log(2)
}
} else {
console.log(3)
}
?:是的
因此,您的代码:
var x = true ? false ? '1' : '2' : '3'
是以下内容的简写版本:
var x;
if(true){
if(false){
x = '1';
}else{
x = '2'; // <= You will be here.
}
}else {
x = 3;
}
varx;
如果(真){
if(false){
x='1';
}否则{
x='2';//您知道为什么true?'1':'2'
会返回'1'
?与true?(false?'1':'2'):'3'
,因为三元运算符关联到右侧