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

关于ES6类构造函数传入参数无报错的原因咨询

为什么ES6类构造函数传多余参数不会报错?

嘿,这个问题其实是JavaScript语言本身的特性导致的,和ES6类的机制直接相关~

JavaScript是弱类型、动态语言,它的函数(包括类的构造函数)在调用时不会检查传入的参数数量是否和定义的形参数量匹配。具体来说:

  • 当你传入的参数比形参多的时候,多出来的参数不会被主动抛出错误,只是不会被构造函数里的代码处理(你可以通过arguments对象访问到这些额外参数,但如果你的构造函数没用到它们,就相当于被忽略了)。
  • 当你传入的参数比形参少的时候,对应的形参会被赋值为undefined,同样不会报错。

回到你的代码例子:
你的Game类构造函数定义是:

module.exports = class Game {
  constructor() {}
};

没有声明任何形参,但调用new Game(1,2,3)时,JavaScript不会因为参数数量不匹配而抛出错误——这些1,2,3只是被传入了构造函数,但因为构造函数里没有处理它们的逻辑,所以不会对实例产生影响,实例依然能正常创建。

举个普通函数的例子更直观:

function sayHi() {
  console.log('Hi!');
}
sayHi('Tom', 25); // 输出"Hi!",完全不会报错

如果想要强制限制构造函数不能接收参数,你可以手动在构造函数里添加参数数量检查:

module.exports = class Game {
  constructor() {
    if (arguments.length > 0) {
      throw new Error('Game构造函数不接受任何参数!');
    }
  }
};

这样当你传入参数调用new Game(1,2,3)时,就会抛出你预期的错误了。

内容的提问来源于stack exchange,提问作者Andre Aus B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:31:15