Комментарии 13
Например, попытка выполнения следующего кода приведёт к выдаче исключения ReferenceError:
'use strict'; badVariable = 1;
Только если эта переменная не объявлена в "родительских" областях видимости.
Рискну предположить что для такого случая:
const o = { ...a, a: 2 }; // where a = { a: 1 }
чтобы в этом случае не выкидывало ошибку.
Нет, это же не из той оперы. А вообще, spread оператор обычно транспилируется (и рискну предположить, что роботает) через Object.assign, который уже не имеет никакого отношения к синтаксису.
Отчего же? Консистентность языковых конструкций достаточно важна. Если используя spread можно задать два одинаковых ключа, а без него нельзя — то это нехорошо. Хотя версия с JSON вероятнее :-)
Скорее всего, для совместимости с JSON. В нем тоже присутствует такая же фича.
а можно ли включить для функции или скрипта «sloppy mode»? Например: в хроме для одноразовой задачки (нахождения оптимального решения) прямо в консоли разработчика понадобилось использовать eval внутри setTimeout и… хром не разрешает так делать
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Зачем в JavaScript нужен строгий режим?