Может кто-нибудь объяснить, почему приведенный ниже код не выдаст ошибку:
var x;
false ? null : x = 1;
Согласно приоритет MDN-оператора условный оператор имеет более высокий оператор приоритет перед оператором присваивания , что означает, что приведенный выше код должен выдавать ошибку, потому что он фактически анализируется как:
var x;
(false ? null : x) = 1
, но он не выдал ошибку, тогда как это работает, как ожидалось :
var x;
x = 1 ? alert(x) : null;
Приведенный выше код анализируется следующим образом:
var x;
x = (1 ? alert(x) : null);
, поскольку условный оператор имеет более высокий приоритет, но почему в моем самом первом коде он не выдаст ошибку, если условный оператор имеет более высокий приоритет, чем оператор присваивания?