Я читал о тернарном операторе на разных языках и заметил что-то интересное в разделе Javascript. http://en.wikipedia.org/wiki/%3F:#JavaScript
Условный оператор в JavaScript имеет ту же структуру синтаксиса и приоритета, что и в других вариантах, основанных на BCPL, но существенная разница существует в семантике: она возвращает L-значение.
В первом предложении указано, что возвращение тернара в javascript является значением lvalue, поэтому я попробовал несколько примеров с нечетными результатами (в хром-консоли).
Дано:
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
Почему первая работа и вторая сбой? (Логически они одни и те же утверждения, нет?)