Как правильно интерпретировать это сложное выражение javascript?
some_condition ? a = b : c = d = e;
Следуя правилам приоритета операторов, я ожидаю, что оно будет:
(some_condition ? a = b : c) = d = e;
Но похоже, что на самом деле группировка:
РЕДАКТИРОВАТЬ: (Первоначальная группировка неясно. Обновление см. Ниже)
РЕДАКТИРОВАТЬ: some_condition ? a = b : (c = d = e);
Почему это так? (И нет, я не написал этот код)
РЕДАКТИРОВАТЬ: Кажется, это говорит о том, что в Javascript сказать, что ?:
имеет более высокий приоритет, чем =
, не совсем верно. В качестве дополнительного примера:
x = y ? a = b : c = d = e;
Если ?:
имеет более высокий приоритет, чем =
(как в C), тогда группировка будет
x = ((y ? a = b : c) = (d = e));
а точнее (из ответов) у нас есть
x = (y ? a = b : (c = d = e));
Относительный приоритет ?:
и =
, кажется, зависит от , где они появляются в выражении