You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止BabelJS将arguments关键字转换为全局变量?

解决Babel转译箭头函数中arguments导致的问题

首先得明确一个关键:ES6箭头函数本身就不绑定arguments对象,你在箭头函数里直接用arguments其实是不符合规范的写法——它会试图引用外层作用域的arguments(如果有的话),如果外层也没有,就会变成全局变量,这就是Babel转译出var arguments = arguments;这种报错代码的原因。

下面给你两个靠谱的解决办法,比去折腾Babel配置要更合理:

  • 改用普通函数:如果你的逻辑需要依赖arguments,直接把箭头函数换成普通函数即可。普通函数天然绑定arguments对象,Babel转译后会正常处理:

    function myFunction() {
      someOtherFunction(...arguments);
    }
    myFunction('one', 'two', 3, {number: 4});
    
  • 使用ES6剩余参数替代arguments:如果坚持要用箭头函数,用剩余参数语法(...args)来接收所有传入的参数,这是ES6推荐的写法,代码更清晰,也不会有转译问题:

    const myFunction = (...args) => {
      someOtherFunction(...args);
    }
    myFunction('one', 'two', 3, {number: 4});
    

至于你问的「是否可通过配置或特殊注释阻止该行为」——其实不推荐这么做,因为你原本的代码写法就不符合ES6规范,Babel的转译异常是因为它在试图兼容这种不规范的用法。硬要配置的话,也没有直接对应的开关能让Babel正确处理箭头函数里的arguments,反而不如修正代码来得稳妥。

内容的提问来源于stack exchange,提问作者Jos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:10:03