Да, это работает в моей консоли поджигателя. Почему что-то вроде этого не представляет синтаксической ошибки?
[] = 5; [] = doThis(); [] = (function() {})();
Просто любопытный на предмет того, почему это позволяется.
Похоже, Javascript в FF разрешает присваивание с использованием сопоставления, поэтому вы можете установить несколько переменных за один раз:
[x,y] = [5,6]; // sets x to 5 and y to 6
«Очевидно», некоторые реализации JS очень снисходительны и будут молча игнорировать любые дополнительные значения, поэтому это делает то же самое:
[x,y] = [5,6,7];
и это просто ничего не присвоит:
[] = [5,6,7];
и, вдобавок ко всему, похоже, что FF даже хочет пойти с кейсом, который вообще не соответствует массиву:
[x] = 5; // makes x undefined
поэтому, если вы используете [] = something
, тогда «ничему не присваивается неопределенное значение», поэтому все сводится к простой оценке RHS.
(Заявление об ограничении ответственности: это всего лишь предположение смысла, запустив что-то в FF ...)
Я получаю ошибку "Uncaught ReferenceError: Invalid left-hand side in assignment" в Chrome. IE8 выдает "Error: Cannot assign to '[object]'". FF, действительно, не выдает ошибку.
Скорее всего, это просто недоработка JavaScript-движка Firefox, и в любом случае, похоже, это не влияет на функциональность литерала массива [].