举例说明如何为JavaScript的方法参数设置默认值


Posted in Javascript onNovember 17, 2015

你是否遇到过这样的情况,写了个function,无参数。
 

function showUserInfo(){
alert("你好!我是小明。");
}

function showUserInfo(){ 
  alert("你好!我是小明。"); 
}

调用:
 

showUserInfo();

showUserInfo();

后来,发现其他地方也需要这个function,但是有变量值已经在function里面写死了,怎么办?加个参数吧。
 

function showUserInfo(name){
name=name||"小明";
alert("你好!我是"+name+"。");
}

function showUserInfo(name){ 
  name=name||"小明"; 
  alert("你好!我是"+name+"。"); 
}

说明一下:name=name||"小明" 这句代码的意思是如果name为null就等于默认值“小明”。也可以这样写:

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岁。

 
好了,如果我们需要再添加生日、电话、性别、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)的作用就是将传入的setting配置与defaultSetting合并,并用setting中的配置覆盖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个,我就会使用这种参数对象。

Javascript 相关文章推荐
javascript 短路法代码精简
Aug 20 Javascript
javascript 得到变量类型的函数
May 19 Javascript
解析Jquery取得iframe中元素的几种方法
Jul 04 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 Javascript
vue中的event bus非父子组件通信解析
Oct 27 Javascript
详解vue 数组和对象渲染问题
Sep 21 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 Javascript
JS class语法糖的深入剖析
Jul 07 Javascript
Jquery easyui 实现动态树
Nov 17 #Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
Nov 17 #Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 #Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 #Javascript
基于Jquery easyui 选中特定的tab
Nov 17 #Javascript
jquery实现简单的表单验证
Nov 17 #Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
Nov 17 #Javascript
You might like
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
使javascript也能包含文件
2006/10/26 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
小程序实现图片移动缩放效果
2020/05/26 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
Python如何实现转换URL详解
2019/07/02 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
环保倡议书300字
2014/05/15 职场文书
同志主要表现材料
2014/08/21 职场文书
公司租车协议书
2015/01/29 职场文书
催款函范文
2015/06/24 职场文书
活动宣传稿范文
2015/07/23 职场文书
外出考察学习心得体会
2016/01/18 职场文书
导游词之塘栖古镇
2019/12/04 职场文书