举例说明如何为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 相关文章推荐
showModelessDialog()使用详解
Sep 21 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
Jul 27 Javascript
Ajax与服务器(JSON)通信实例代码
Nov 05 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
Dec 28 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 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
4.与数据库的连接
2006/10/09 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue组件中的数据传递方法
2018/05/14 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Python程序慢的重要原因
2020/09/04 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
捐款倡议书
2014/04/14 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
银行求职信范文
2019/05/13 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python