举例说明如何为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 相关文章推荐
js获取提交的字符串的字节数
Feb 09 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
使用BootStrap实现用户登录界面UI
Aug 10 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
Angular 4.X开发实践中的踩坑小结
Jul 04 Javascript
JavaScript html5 canvas实现图片上画超链接
Oct 20 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
150行代码带你实现微信小程序中的数据侦听
May 17 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
取选中的radio的值
2010/01/11 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python3.x中自定义比较函数
2015/04/24 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Django REST framework视图的用法
2019/01/16 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
如何通过命令行进入python
2020/07/06 Python
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
百度JavaScript笔试题
2015/01/15 面试题
成教自我鉴定
2013/10/27 职场文书
英语国培研修感言
2014/02/13 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
班干部演讲稿
2014/04/24 职场文书
升学宴演讲稿
2014/09/01 职场文书
环保宣传语大全
2015/07/13 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers