сложное условное выражение JavaScript

Как правильно интерпретировать это сложное выражение JavaScript?

какое-то_условие ? а = б : с = d = е;

Следуя правилам приоритета операторов, я ожидаю, что это будет:

(some_condition ? a = b : c) = d = e;

Но кажется, что группировка на самом деле следующая:

РЕДАКТИРОВАТЬ: (Исходная группировка была неясной. Обновление см. ниже)

РЕДАКТИРОВАТЬ: some_condition ? а = б : (с = d = е);

Почему это так? (И нет, я не писал этот код)

РЕДАКТИРОВАТЬ: это, кажется, предполагает, что в Javascript сказать, что ?:имеют более высокий приоритет, чем = , не совсем верно. В качестве еще одного примера:

x = y ? а = б : с = d = е;

Если ?:имеют более высокий приоритет, чем = (как в C), тогда группировка будет следующей:

x = ((y ? a = b : c) = ( г = д));

а скорее (из ответов) мы имеем

x = (y ? a = b : (c = d = e));

Относительный приоритет ?:и = , по-видимому, зависит от , гдеони появляются в выражении

9
задан tyty 2 April 2012 в 19:11
поделиться