2016-09-26 2 views
2

Я использую Grunt 1.0.1 с grunt-contrib-uglify 2.0.0 для uglicate объединенных файлов .js моего проекта. Это отлично работает до сегодняшнего дня, где я представил функцию JavaScript с функцией paramater, которая имеет значение по умолчанию.grunt-contrib-uglify выдает ошибку при использовании параметра функции со значением по умолчанию

Теперь результаты задачи в этом Грунт сообщение об ошибке:

Running "uglify:app" (uglify) task 
JS_Parse_Error { 
    message: 'SyntaxError: Unexpected token operator «=», expected punc «,»', 
filename: 'app.js', 

app.js линия в беспокойстве, как вторит эта задача:

function addNumbers(a, b=1){ 
    console.log(a + b); 
} 

где точная колонка в линии где находится b=1.

Если я удаляю значение по умолчанию, все снова работает отлично.

Почему жалоба на grunt-contrib-ouglify здесь? Как я могу решить эту проблему?

ответ

1

Ссылаясь на сообщение об ошибке, вы, очевидно, не используете ES6. Способ установки значения по умолчанию для b будет работать только в ES6.

Вот что вы можете сделать, чтобы установить значение по умолчанию для b

function addNumbers(a, b) { 
    b = b || 1; 
    console.log(a + b); 
} 

Если вы хотите принять b иметь значение 0, то вы можете проверить, если b является undefined и || не number, чтобы установить значение b по умолчанию - 1.

function addNumbers(a, b) { 
    b = (b === undefined || typeof b !== 'number') ? 1 : b; 
    console.log(a + b); 
} 
+0

Итак, как я могу заставить grunt-contrib-uuglify использовать ES6, а не устаревшую спецификацию? Является ли это вопросом версии node.js, которую я запускаю в своей среде разработки? Если это так, я запускаю v.4.5.0. – Bunjip

+1

Я бы не счел это устаревшей спецификацией, но версия node.js имеет значение, когда дело доходит до поддержки функций ES6, вы можете взглянуть на следующую таблицу [Node.js ES2015 Support] (http: // node .green /), особенно * параметры функции по умолчанию *, которые вы хотите использовать. Однако вы можете добавить задачу в свой файл grunt, который переведет ваш ES6 на ES5. Вот плагин grunt, который может сделать это для вас [grunt-babel] (https://github.com/babel/grunt-babel). – DavidDomain

Смежные вопросы