举例说明如何为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 13 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
Apr 08 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
理解javascript async的用法
Aug 22 Javascript
layui点击按钮添加可编辑的一行方法
Aug 15 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
koa2实现登录注册功能的示例代码
Dec 03 Javascript
vuex实现的简单购物车功能示例
Feb 13 Javascript
extjs4图表绘制之折线图实现方法分析
Mar 06 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
Nov 09 jQuery
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
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
js玩一玩WSH吧
2007/02/23 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
ES6 十大特性简介
2020/12/09 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
网络方面基础面试题
2012/11/16 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
创新比赛获奖感言
2014/02/13 职场文书
中介业务员岗位职责
2014/04/09 职场文书
明星员工获奖感言
2014/08/14 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
mysql查找连续出现n次以上的数字
2022/05/11 MySQL
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript