javascript中函数参数未传时默认为undefined,非错误;需用=== undefined或typeof判断,避免误判;es6默认参数仅对undefined生效,null需用??处理。

函数参数未传时,JavaScript 会自动赋予 undefined,这是语言的默认行为,不是错误,但需要正确识别和应对。
看调用时是否缺参
当函数定义了形参,而调用时没给对应实参,该形参值就是 undefined。比如:
function greet(name) { console.log(name); }-
greet();→ 输出undefined -
greet('Alice');→ 输出'Alice'
区分 undefined 和 null
undefined 表示“没传”或“没定义”,null 是你主动传进去的“有意为空”。它们在默认参数中表现不同:
function fn(x = 'default') { return x; }-
fn();→'default'(触发默认值) -
fn(undefined);→'default'(也触发) -
fn(null);→null(不触发,默认值被跳过)
安全判断参数是否为 undefined
推荐用严格相等 === undefined 或 typeof x === 'undefined':
if (name === undefined) { name = '游客'; }-
if (typeof age === 'undefined') { age = 0; }(更稳妥,可防未声明变量) - 避免只用
== undefined或!name,因为0、''、false也会被误判
用 ES6 默认参数替代手动判断
直接在函数定义里写默认值,更简洁、语义更清晰:
function sendMsg(text = '暂无内容', to = 'system') { ... }-
sendMsg();→text自动为'暂无内容' - 注意:它只对
undefined生效,null仍需额外处理,如:text = text ?? '备用内容'










