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

为何JavaScript函数实参与形参不进行校验?

JavaScript函数参数不校验的原因

JavaScript作为动态弱类型语言,和Java这类静态强类型语言的参数机制有着本质区别,这就是你看到实参与形参不匹配却仍能执行的核心原因:

  • 无强制参数数量校验:JS函数定义时的形参只是“占位符”,调用时传入的实参数量完全不受限制。哪怕定义时没有形参,像你例子里的display(),调用display(12)也不会报错——多传的参数会被存在函数内部的arguments对象(ES6后也可用...rest参数获取)里,只要函数逻辑没用到这些多余参数,就不会影响执行。
  • 缺省参数自动设为undefined:如果调用时传的实参比形参少,没被赋值的形参会自动被设为undefined,而非直接报错。比如function fn(a) { console.log(a) },调用fn()会打印undefined,程序依然正常运行。
  • 编译阶段无参数检查:Java这类语言在编译阶段就会严格校验方法的参数数量、类型是否匹配,不匹配直接编译失败。但JS没有这个环节,参数校验仅在运行时进行,且只有当你在函数逻辑里用到不符合预期的参数时才可能出错(比如对undefined调用方法),否则函数会正常执行。

再举个直观例子:

function showInfo(name) {
  console.log(`Hello, ${name || 'Guest'}`);
}
// 以下调用全部合法
showInfo(); // 打印 Hello, Guest
showInfo('Alice'); // 打印 Hello, Alice
showInfo('Bob', 25); // 打印 Hello, Bob(多余的25被忽略)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:34:55