Я создал такую функцию:
function saveItem(andClose = false) {
}
Он отлично работает в Firefox
В IE он выдает эту ошибку на консоли:
Expected ')'
В Chrome выдает эту ошибку в консоли:
Uncaught SyntaxError: Unexpected token =
Оба браузера отмечают источник ошибки как строку создания функции.
javascript
jquery
Talon
источник
источник
Ответы:
Вы не можете этого сделать, но вместо этого можете сделать что-то вроде:
Это часто сокращается до примерно следующего:
Обновить
Сказанное выше верно для ECMAScript <= 5. ES6 предлагает параметры по умолчанию . Таким образом, вместо этого можно было бы читать:
источник
name = name || 'Bob';
не следует использовать, потому что если для name установлено значение falsey, вместо name будет использоваться значение по умолчаниюname = name || 'Bob'
использованияname = (name === undefined) ? '' : name;
Это недопустимый синтаксис ECMAScript, но это допустимый синтаксис для расширенного набора функций Mozilla, которые они добавляют в свою реализацию языка.
Синтаксис назначения параметров по умолчанию, вероятно, появится в ECMAScript 6.
источник
foo = foo || "the default"
. Или вы можете проверить.length
наarguments
объекте. Или вы можете просто проверить каждый параметрundefined
. Есть разные случаи использования каждого.Javascript не поддерживает спецификатор "по умолчанию".
Быстрый способ сделать то, что вы хотите, меняется:
на следующее:
источник
andClose
значение false, это было 0 ... не совсем то, что я ожидал от него ...var andClose = andClose === undefined? false: andClose;
Это позволит вам перейти0
к функции и не заменять ее наfalse
.Предоставленный вами код не будет работать в Chrome <версии 49: https://kangax.github.io/compat-table/es6/#test-default_function_parameters
Вы использовали допустимый синтаксис ECMAScript 2015:
На мой взгляд, лучший способ использовать функции ES2015 - объединить ресурсы с Browserify или WebPack с шагом для использования Babel для транс-компиляции ES2015 в ES5. Таким образом, вам не придется беспокоиться о диаграмме совместимости браузера ES2015. Больно начинать с первого раза, но оно того стоит.
источник
В вашем случае у вас есть другая альтернатива, чтобы убедиться, что ваша переменная является логической:
Значение по умолчанию
undefined
, иtrue == undefined
=>false
, поэтому значение по умолчанию будетfalse
:)источник
andClose
переменная уже назначена в этой области