Как правильно интерпретировать это сложное выражение 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));
Относительный приоритет ?:
и =
, по-видимому, зависит от , гдеони появляются в выражении