Javascript三元操作

时间:2017-01-20 21:31:42

标签: javascript ternary-operator

我在一些代码中看到了以下内容。是否有必要||假?如果有必要,怎么做?

object.key = myData ? myData.value : false || false;

4 个答案:

答案 0 :(得分:4)

快速审核

?是三元运算符

:分隔三元运算符的输出状态

||通常是OR运算符,但在这种情况下,我认为它旨在用作合并运算符

= myData ? myData.value : false

...将从myData返回值,因为它不为null;否则返回false。

false || false

...总是会返回false。

= myData || false

...如果不是null,则返回myData,否则返回false。

如果我不得不猜测,我想原来代码可能是这样编写的:

= myData.value || false

......在他们意识到他们需要一个非空对象来获取value之前。

也许他们的意思是

= (myData ? myData.value : false) || false;

...如果myData.value为非null,则返回myData.value,如果myData或myData.value为null,则返回false。

但如果这就是你想要的话我会写出来

= myData ? myData.value || false : false;

答案 1 :(得分:1)

只有在需要假名值false时才有意义,而不是假名值。

但这需要括号来实现。



var myData;
console.log(myData ? myData.value : false || false);   // false
console.log((myData ? myData.value : false) || false); // false

myData = {};
myData.value = undefined;
console.log(myData ? myData.value : false || false);   // undefined
console.log((myData ? myData.value : false) || false); // false

myData.value = 0;
console.log(myData ? myData.value : false || false);   // 0
console.log((myData ? myData.value : false) || false); // false

myData.value = '';
console.log(myData ? myData.value : false || false);   // ''
console.log((myData ? myData.value : false) || false); // false

myData.value = 'foo';
console.log(myData ? myData.value : false || false);   // foo
console.log((myData ? myData.value : false) || false); // foo

myData.value = true;
console.log(myData ? myData.value : false || false);   // true
console.log((myData ? myData.value : false) || false); // true




答案 2 :(得分:0)

我非常确定" false ||假"这里不需要。但是,以下表达式更有意义。

object.key = (myData ? myData.value : false) || false;

使用'或'将值(可以是真或假)与false进行比较。因此,在myData.value不是真正的情况下,对象键将被设置为' false'。

答案 3 :(得分:0)

由于operator precedence,在条件(三元)运算符之前计算逻辑或ListView。在所有情况下,这意味着您的表达式仅计算:

||

关于myData可能值的考虑现在只是噪音。