Я написал следующий кодМассив Notation Порядок операций
o[s += "a"] = o[s += "b"] = o[s += "c"] = 0;
мне было любопытно, почему переменная s
заканчивается хранение «ABC», а не «СВА». Похоже, что код будет проще выполнять справа налево.
Кажется, что исполнитель выбирает и индексирует для хранения, а затем решает, что там происходит, но это делает звук медленнее, так как в стек будет столько состояний и памяти. Может кто-нибудь объяснить, почему это имеет смысл для выполнения кода в том порядке, который есть?
Я включил скрипку с несколькими примерами. http://jsfiddle.net/eggrdtuk/3/
Я считаю, что утверждения между [], (например, при использовании '()') будут выполняться сначала, в том порядке, в котором его видит синтаксический анализатор. поэтому в конце вы получите 'o [" a "] = o [" ab "] = o [" abc "] = 0;' который затем будет выполняться справа налево. – Luke
Я не уверен, что выполнение этого права слева направо, а не слева направо будет иметь смысл. Индексы должны вычисляться сначала, прежде чем он сможет выполнять любые задания. –
@MattBurland Я думал, что это начнется с правой стороны, определит, что собирается хранить, тогда где, а не наоборот ... я бы подумал, что есть значительная экономия как во времени, так и в пространстве. –