Я вижу, кто-то меньше, чем оптимальная генерация коды в ситуациях, как это:Есть ли способ получить меньшее генерирование кода из Babel?
const selectedReddit = (state = 'reactjs', action) => {
console.log(state, action);
}
, который преобразуется в это:
'use strict';
var selectedReddit = function selectedReddit() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'reactjs';
var action = arguments[1];
console.log(state, action);
};
Который является довольно большим кодом раздуваться, когда он мог бы :
'use strict';
function selectedReddit(state, action) {
state = state || 'reactjs';
console.log(state, action);
};
Возможно, это связано с трансформацией для let, но это кажется довольно дорогостоящим перераспределением для аргументов по умолчанию. Есть ли сокращение кода, которое может быть применено к этому выходу, или другой трансформатор, который будет создавать меньший код?
Для использования 119 требуется 219 символов. Это примерно 45% раздувания кода.
@lonesomeday отметил, что это не будет работать для state === false
но
'use strict';
function selectedReddit(state, action) {
state = (state === undefined) ? 'reactjs' : state;
console.log(state, action);
};
который весит в @ 160 байт, который составляет только 26% кода наворотов.
Я не уверен, почему вставляется var funcName = function funcName
и почему все аргументы становятся аргументами [index].
Было бы здорово писать в ES6, но это почти кричит DONT DO IT! если ваш код будет передан для браузера таким образом.
Это не может быть 'state = state || 'reactjs'; 'потому что оригинал допустил бы' false', тогда как это заменило бы его. Это может быть лучше для вас, но это не то, что означает код ES6. – lonesomeday
Так что, даже если я исправлю это, это по-прежнему составляет 26% штрафа за код, который мог быть сгенерирован. – boatcoder
Я предполагаю, что это самый простой способ закодировать его, когда речь заходит о включении параметров отдыха, но я согласен, что это кажется неэффективным. Что касается 'var funcName = function funcName', я полагаю, что он пытается разобраться в проблеме' Function.prototype.name'. – lonesomeday