さまざまな言語の三項演算子について読んでいて、Javascript セクションで興味深いことに気付きました。 http://en.wikipedia.org/wiki/%3F:#JavaScript
JavaScript の条件演算子は、他の BCPL 派生バリアントと同じ構文と優先順位の構造を持っていますが、セマンティクスに大きな違いがあり、左辺値を返します。
最初の文は、javascript での 3 項の戻り値が左辺値であることを示しているため、いくつかの例を試してみましたが、奇妙な結果になりました (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
最初は機能し、2 番目は失敗するのはなぜですか? (論理的には同じステートメントですよね?)