在没有变量赋值的情况下将箭头函数转换为命名函数
Transpile Arrow Functions into Named Functions without Variable Assignment
Babel(下面的配置)转译了以下简单的箭头函数:
const clipboard = id => {
const scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
}
...进入以下内容:
var clipboard = function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
我想要产生的结果是这样的:
function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
换句话说,我希望 Babel 将指定的箭头函数转换为 ES5 命名函数 而无需 将函数赋值给变量。 这可能吗?如果可能,怎么做?
我的构建管道包括一个 uglify 任务,它会破坏变量名(但不是函数名)。我可以使用 uglify 的 mangle: { reserved: [] }
选项,但这需要手动跟踪每个命名的箭头函数。
来自package.json:
"browserslist": "defaults",
"babel": {
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
]
},
根据上面的评论,答案似乎是,“你不应该这样做。”
Babel 如上图所示转换箭头函数,以避免在生产中产生潜在的意外副作用。
Babel(下面的配置)转译了以下简单的箭头函数:
const clipboard = id => {
const scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
}
...进入以下内容:
var clipboard = function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
我想要产生的结果是这样的:
function clipboard(id) {
var scratchpad = document.createElement('input');
scratchpad.value = document.getElementById(id).innerText;
document.body.appendChild(scratchpad);
scratchpad.select();
document.execCommand('copy');
document.body.removeChild(scratchpad);
};
换句话说,我希望 Babel 将指定的箭头函数转换为 ES5 命名函数 而无需 将函数赋值给变量。 这可能吗?如果可能,怎么做?
我的构建管道包括一个 uglify 任务,它会破坏变量名(但不是函数名)。我可以使用 uglify 的 mangle: { reserved: [] }
选项,但这需要手动跟踪每个命名的箭头函数。
来自package.json:
"browserslist": "defaults",
"babel": {
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
]
},
根据上面的评论,答案似乎是,“你不应该这样做。”
Babel 如上图所示转换箭头函数,以避免在生产中产生潜在的意外副作用。