Однажды я увидел определенный способ обмена элементами в массиве. Как это:Javascript. Элементы инициализации массива
var arr = [1,2,3];
arr[0] = [arr[1], arr[1] = arr[0]][0];
Очевидно, что этот метод предположить, что первое значение временного массива arr[1]
будет рассчитываться перед тем второй arr[1] = arr[0]
.
В противном случае оба значения будут одинаковыми. Синтетический пример:
var x = 1;
var arr = [x, x += 1, x += 1];
arr; // [1,2,3] or [3,3,2] or maybe [3,2,3]?
Есть ли гарантии, что переводчик javascript не будет действовать таким образом?
"* Лучше не полагаться на это, хотя. *" - А? Вы абсолютно можете положиться на это. – Bergi