Javascript considitional三元运算符无法正确解析

时间:2015-03-14 18:50:05

标签: javascript conditional-statements ternary-operator conditional-operator

为什么这会解决为假:

var check = true;
var val = 'bottom-left';

( val !== 'top-left' || val !== 'top-right'  || val !== 'middle-left'  || val !== 'middle-right'  || val !== 'middle'  || val !== 'bottom-left'  || val !== "bottom-right" ) ? check = false : check = true;

alert('check: '+check);

是不是因为我不止一次测试过val?这项工作:

var check = true;
var val = 'bottom-left';

( val !== "bottom-left" ) ? check = false : check = true;

alert('check: '+check);

修改

写作方式略有不同工作:

( val === 'top-left' || val === 'top-right'  || val === 'middle-left'  || val === 'middle-right'  || val === 'middle'  || val === 'bottom-left'  || val === "bottom-right" ) ? check = true : check = false;

但我仍然不太明白其中的区别。要么正确解决?

编辑2:

JSFiddle:resolves false

1 个答案:

答案 0 :(得分:0)

如果左侧为真,则

||评估为左侧,否则评估为右侧。

val !== 'top-left' || val !== 'top-right' || etc

如果val不是'top-left',则左侧是真的。所以情况确实如此。

否则val 'top-left',在这种情况下,它不是'top-right',因此条件也是如此。

它永远不会超越第二个,条件永远都是真的。