Минимизировать javascript со значением по умолчанию
У меня есть функции со значением по умолчанию:
function f(a, b = 'something') {
//do stuff
}
Это работает отлично, но если я попытаюсь минимизировать свой JS файл с помощью связанных с ним приложений, произойдет ошибка:
Ошибка: Неожиданный оператор токена '=', ожидаемый punc ','
Как я знаю, использование =
для установки значения по умолчанию в Javascript является допустимым, почему я получаю эту ошибку?
Должен ли я определять значение по умолчанию в теле функции?
Ответы
Ответ 1
Использование =
для установки значений по умолчанию для параметров функции в Javascript является функцией ES6, которая в настоящее время поддерживается только браузерами Chrome 49 и Firefox 15.0:
![введите описание изображения здесь]()
Из-за ограниченной поддержки браузера несколько (если есть) minifiers уже поддерживают эту функцию.
Альтернатива 1:
Вы можете установить параметры по умолчанию следующим образом:
function f(a, b) {
b = typeof b === 'undefined' ? 'something' : b;
//do stuff
}
Альтернатива 2:
Вы можете использовать транспилер, например Babel, чтобы преобразовать код ES6 в то, что более старые браузеры и minifiers понять.
Ответ 2
Параметры по умолчанию - это новые функции EcmaScript, поставляемые с ES6 (официально известный как ES2015).
Большинство minifiers не обновлены. Однако вы можете использовать # ветвь гармонии uglifyjs для большей части ES6.
Говоря об этом, поскольку их поддержка по-прежнему ограничена, параметры по умолчанию на самом деле не используются в браузере, если
- вам не нравятся пользователи IE.
- или вы используете транспилер, например Babel, конвертирующий код с ES6 на ES5
Если вы не готовы к одному из этих решений, будьте осторожны с "Совместимость браузера" всех страниц MDN.
Ответ 3
Как вы минимизируете? Если вы используете что-то вроде gulp, вы можете связать его с помощью pipe()
, например:
gulp('src.js').pipe(babel()).pipe(minify());
В других случаях вы можете использовать устаревшие "значения по умолчанию":
function (a, b) {
b = b || 'default';
}
Ответ 4
попробуйте следующее:
function someFunction(a,b){
a=(a=='bool condition here':a,'default value');//a is a optional parameter variable now with a default value
b=(b=='bool condition here':b,'default value');//b is a optional parameter variable now with a default value
}