我正在阅读不同语言的三元运算符,并在 Javascript 部分发现了一些有趣的东西。 http://en.wikipedia.org/wiki/%3F:#JavaScript
JavaScript 中的条件运算符与其他 BCPL 派生的变体具有相同的语法和优先级结构,但语义上存在显着差异:它返回一个l-value。
第一句话说明javascript中三元的返回是一个左值,所以我尝试了一些例子,结果很奇怪(在chrome控制台中)。
鉴于:
var a = { 'yo' : 'momma' }
var b = { 'yo' : 'cool' }
var bool = true
(bool? a : b).yo = 'LLJ'
//a is now { 'yo' : 'LLJ' }
(bool? a.yo : b.yo) = 'LLJ' //throws a reference error
为什么第一个工作,第二个失败?(从逻辑上讲,它们是相同的陈述,不是吗?)