JavaScript: [] = 5, никакая синтаксическая ошибка? Почему?

Да, это работает в моей консоли поджигателя. Почему что-то вроде этого не представляет синтаксической ошибки?

[] = 5; [] = doThis(); [] = (function() {})();

Просто любопытный на предмет того, почему это позволяется.

13
задан Iggyhopper 7 July 2010 в 01:39
поделиться

2 ответа

Похоже, 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 ...)

14
ответ дан 2 December 2019 в 00:02
поделиться

Я получаю ошибку "Uncaught ReferenceError: Invalid left-hand side in assignment" в Chrome. IE8 выдает "Error: Cannot assign to '[object]'". FF, действительно, не выдает ошибку.

Скорее всего, это просто недоработка JavaScript-движка Firefox, и в любом случае, похоже, это не влияет на функциональность литерала массива [].

2
ответ дан 2 December 2019 в 00:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: