JavaScript方法参数默认值设置技巧:从||运算符到$.extend

作者:纸飞机

时间:2026-10-29

浏览:217

本文详细讲解了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个时,我会优先使用这种参数对象方式。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章