Подтвердить что ты не робот

Функции Javascript и параметры по умолчанию, не работающие в IE и Chrome

Я создал такую ​​функцию:

function saveItem(andClose = false) {

}

Он отлично работает в Firefox

В IE он дает эту ошибку на консоли: Expected ')'

В Chrome это приводит к ошибке в консоли: Uncaught SyntaxError: Unexpected token =

Оба браузера отмечают источник ошибки как строку создания функции.

4b9b3361

Ответ 1

Вы не можете этого сделать, но вместо этого можете сделать что-то вроде:

function saveItem(andClose) {
   if(addClose === undefined) {
      addClose = false;
   }
}

Это часто сокращается до следующего:

function setName(name) {
  name = name || 'Bob';
}

Обновление

Вышеупомянутое верно для ECMAScript <= 5. ES6 предложила Параметры по умолчанию. Таким образом, вышеизложенное может читать:

function setName(name = 'Bob') {}

Ответ 2

Это не допустимый синтаксис ECMAScript, но он является допустимым синтаксисом для суперсайтов Mozilla функций, которые они добавляют к их реализации языка.

Синтаксис назначения параметров по умолчанию, скорее всего, входит в ECMAScript 6.

Ответ 3

Javascript не разрешает спецификатор по умолчанию.

Быстрый способ делать то, что вы хотите, меняется:

function saveItem(andClose = false) {

}

к следующему:

function saveItem(andClose) {
    // this line will check if the argument is undefined, null, or false
    // if so set it to false, otherwise set it to it original value
    var andClose = andClose || false;

    // now you can safely use andClose
    if (andClose) {
        // do something
    }
}

Ответ 4

Предоставленный вами код не будет запускаться в Chrome < версия 49: https://kangax.github.io/compat-table/es6/#test-default_function_parameters

Вы использовали действительный синтаксис ECMAScript 2015:

На мой взгляд, лучший способ использовать функции ES2015 - это объединить активы с Browserify или WebPack с шагом для использования Babel для перекомпилирования ES2015 на ES5. Таким образом, вам не нужно беспокоиться об этой таблице совместимости браузера ES2015. Это боль, чтобы начать работу в первый раз, но стоит того.