Я использую Google Closure Compiler, и я получаю следующее сообщение об ошибке:ES6 не поддерживается в Closure Compiler
ES6_FEATURE: this language feature is only supported in es6 mode: computed property. Use --language_in=ECMASCRIPT6 or ECMASCRIPT6_STRICT to enable ES6 features.
Строка, которая вызывает эту ошибку, это одна:
var TheCellRef = LeadImport2ExcelLibrary['utils']['encode_cell']({ ['c']: C, ['r']: R });
В основном Я передаю объект, который я создаю в той же строке. Я знаю, что могу просто добавить поддержку ES6 в исходный заголовок JavaScript, но мне было интересно, почему эта ошибка подходит и как ее исправить?
Что является то, что код должен делать? Устные переводчики pre-ecmascript 6 считали бы, что вы используете массивы как объектные ключи, которые недействительны. – JJJ
Э-э? Он говорит об этом прямо в сообщении: * «эта языковая функция поддерживается только в режиме es6: ** вычисленное свойство **» * Вы используете вычисленные свойства, являющиеся функцией ES6. Возможное решение - не использовать рассчитанные свойства. Тем не менее, мне действительно интересно, почему вы использовали '{['c']: C, ...}', если вы, похоже, не знаете об этой функции? –
@FelixKling: это потому, что я использую GCC для генерации клиентских файлов динамически, и поскольку у меня нет extern для библиотеки, которую я использую (SheetJS.js), мне нужно убедиться, что GCC не переименовывает объектные ключи и способ сделать это - использовать нотацию объектной строки вместо обозначения точки объекта. Вот почему {c: C, r: R} не работает, потому что после компиляции c и r будут переименованы, но ['c'] и ['r'] преобразуются в точечную нотацию, так что библиотека может получить объект, который он ожидает. – frenchie