JavaScript方法参数默认值设置技巧:从||运算符到$.extend
本文详细讲解了JavaScript中为方法参数设置默认值的两种常见方式。首先介绍了使用||运算符或if判断处理单个参数的传统做法,随后针对参数较多的情况,推荐使用jQuery的$.extend方法合并配置对象。通过具体代码示例,对比了两种方案的适用场景,建议参数超过3个时使用对象配置模式以提高代码可维护性。
JavaScript函数参数默认值设置方法
你是否曾遇到这样的场景:编写了一个没有参数的函数。
function showUserInfo(){
alert("你好!我是小明。");
}
function showUserInfo(){
alert("你好!我是小明。");
}
调用方式如下:
showUserInfo();
showUserInfo();
随后,发现该函数在其他地方也需要使用,但内部变量值已被硬编码,该如何处理?此时可以考虑添加参数。
function showUserInfo(name){
name=name||"小明";
alert("你好!我是"+name+"。");
}
function showUserInfo(name){
name=name||"小明";
alert("你好!我是"+name+"。");
}
这里解释一下:name=name||"小明" 这行代码的含义是,如果 name 为 null 或 undefined,则使用默认值“小明”。也可以采用以下写法:
function showUserInfo(name){
// name=name||"小明";
if(!name){
name="小明";
}
alert("你好!我是"+name+"。");
}
function showUserInfo(name){
// name=name||"小明";
if(!name){
name="小明";
}
alert("你好!我是"+name+"。");
}
调用示例:
showUserInfo('小李');
showUserInfo('小李');
接着,需求发生变化,需要增加年龄参数。此时需再次修改函数:
function showUserInfo(name,age){
name=name||"小明";
age=age||22;
alert("你好!我是"+name+",今年"+age+"岁。");
}
function showUserInfo(name,age){
name=name||"小明";
age=age||22;
alert("你好!我是"+name+",今年"+age+"岁。");
}
调用示例:
showUserInfo('小李');//结果:你好!我是小李,今年22岁。
showUserInfo('小李',19);//结果:你好!我是小李,今年19岁。
showUserInfo(null,19);//结果:你好!我是小明,今年19岁。
showUserInfo('小李');//结果:你好!我是小李,今年22岁。
showUserInfo('小李',19);//结果:你好!我是小李,今年19岁。
showUserInfo(null,19);//结果:你好!我是小明,今年19岁。
使用$.extend处理多参数配置
如果未来还需要添加生日、电话、性别、QQ等更多参数,难道要逐一设置默认值吗?实际上,许多人确实是这样做的。下面介绍一种更简洁的方法,即利用 jQuery 的扩展功能。先看代码:
function showUserInfo(setting){
var defaultSetting={
name:"小明",
age:"22",
sex:"男",
phone:"13888888888",
QQ:"12345678",
birthday:"1980.12.29"
};
$.extend(defaultSetting,settings);
var message='姓名:'+defaultSetting.name
+',性别:'+defaultSetting.sex
+',年龄:'+defaultSetting.age
+',电话:'+defaultSetting.phone
+',QQ:'+defaultSetting.QQ
+',生日:'+defaultSetting.birthday
+'。';
alert(message);
}
function showUserInfo(setting){
var defaultSetting={
name:"小明",
age:"22",
sex:"男",
phone:"13888888888",
QQ:"12345678",
birthday:"1980.12.29"
};
$.extend(defaultSetting,settings);
var message='姓名:'+defaultSetting.name
+',性别:'+defaultSetting.sex
+',年龄:'+defaultSetting.age
+',电话:'+defaultSetting.phone
+',QQ:'+defaultSetting.QQ
+',生日:'+defaultSetting.birthday
+'。';
alert(message);
}
说明:$.extend(defaultSetting,settings) 的作用是将传入的 settings 配置与 defaultSetting 进行合并,并使用 settings 中的配置覆盖 defaultSetting 中的对应配置。 调用示例:
showUserInfo({
name:"小李"
});
//结果:姓名:小李,性别:男,年龄:22,电话:13888888888,QQ:12345678,生日:1980.12.29。
showUserInfo({
name:"小红",
sex:"女",
phone:"13777777777"
});
//结果:姓名:小红,性别:女,年龄:22,电话:13777777777,QQ:12345678,生日:1980.12.29。
showUserInfo({
name:"小李"
});
//结果:姓名:小李,性别:男,年龄:22,电话:13888888888,QQ:12345678,生日:1980.12.29。
showUserInfo({
name:"小红",
sex:"女",
phone:"13777777777"
});
//结果:姓名:小红,性别:女,年龄:22,电话:13777777777,QQ:12345678,生日:1980.12.29。
非常简单!这样即使有100个参数也不必担心。那么,何时使用多个独立参数,何时使用这种参数对象呢?我的经验是,如果一两个参数就能解决问题,就不使用参数对象;当参数超过3个时,我会优先使用这种参数对象方式。
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
