举例说明如何为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 相关文章推荐
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
初学js 新节点的创建 删除 的步骤
Jul 04 Javascript
jquery绑定原理 简单解析与实现代码分享
Sep 06 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
Jun 10 Javascript
javascript日期计算实例分析
Jun 29 Javascript
javascript入门教程基础篇
Nov 16 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
Dec 05 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
微信小程序整个页面的自动适应布局的实现
Jul 12 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
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
php函数式编程简单示例
2019/08/08 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
网页中的图片的处理方法与代码
2009/11/26 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
nodejs基础应用
2017/02/03 NodeJs
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
Python去掉字符串中空格的方法
2014/03/11 Python
python中使用OpenCV进行人脸检测的例子
2014/04/18 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
Pandas分组与排序的实现
2019/07/23 Python
Python sep参数使用方法详解
2020/02/12 Python
python里反向传播算法详解
2020/11/22 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
新农村建设标语
2014/06/24 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书