Минимизировать 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
 }