2019独角兽企业重金招聘Python工程师标准>>>

参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高。

举个例子,比如PHP中的字符串截取函数substr(string,start,length),当不指定length时,函数将默认截取字符串中start位置到字符串结束,而如果指定了length,则截取从start位置开始的以length为长度的字符串,所以如果调用的是substr('http://www.hualai.net.cn',11,6),则返回的是hualai;如果省略掉最后一个参数,substr('http://www.hualai.net.cn',11),则返回hualai.net.cn。

再比如jQuery框架中,$(selector).html()方法是获取该元素内的HTML代码,而$(selector).html(content)则是设置该元素内的HTML。我们知道,在C语言中,我们可以通过如下形式来为函数参数设置默认值:

1 void foo(int a, int b = 1, bool c = false);

在Java中,则可以通过函数重载来设置函数参数默认值:

1 public void foo(int a){ 
2     foo(a, 1); 
3
4 public void foo(int a, int b){ 
5     foo(a, b, false); 
6
7 public void foo(int a, int b, bool c){ 
8     //函数内容 
9 }

而在JavaScript中,如何像jQuery那样设置函数参数默认值呢?JavaScript中并没有像C语言中定义函数时直接在参数后面赋值的方法,也没有像Java里那样的函数重载,但我们可以通过JavaScript方法中的一个arguments只读变量数组来实现,具体如下:

1 function foo(){ 
2     var a = arguments[0] ? arguments[0] : 1; 
3     var b = arguments[1] ? arguments[1] : false
4     //函数内容 
5 }

以上是通过判断参数是否存在,若不存在则将默认值附给变量,而我们可以通过判断参数的类型来实现重载:

1 function foo(){ 
2     if(typeof arguments[0] == 'string')  
3         alert('参数类型为字符串');  
4     else if(typeof arguments[0] == 'number')  
5         alert('参数类型为数值');  
6 }

或者:

1 function foo(){ 
2     if(arguments[0].constructor == String)  
3         alert('参数类型为字符串');  
4     else if(arguments[0].constructor == Number)  
5         alert('参数类型为数值');  
6 }

转载于:https://my.oschina.net/modernizr/blog/72571

JavaScript中实现函数重载和参数默认值相关推荐

  1. Javascript中的函数重载-最佳做法

    用JavaScript伪造函数重载的最佳方法是什么? 我知道不可能像其他语言一样重载Javascript中的函数. 如果我需要两个函数一起使用foo(x)和foo(x,y,z) ,这是最佳/首选方式: ...

  2. 浅谈Javascript中的函数重载实现

    其它面向对象语言如Java的一个常见特性是:能够根据传入的不同数量量或类型的参数,通过"重载"函数来发挥不同的功用.但是这个特性在Javascript中并没有被直接支持,可是有很多 ...

  3. 【TS】函数重载--可选参数--默认参数

    可选参数–默认参数 在ts中定义的数据类型,某些情况下只需要传入定义数据类型的一部分参数,比如:id .name.age.address,此时需要修改用户的名称,那么只需要传入id.name就够了:某 ...

  4. ES6: 参数默认值及中间域

    下午看了一章 ECMA-262 by Dmitry Soshnikov, 现在稍稍来小结下ES6中的参数默认值以及由此产生的参数中间作用域. 原文地址: http://dmitrysoshnikov. ...

  5. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  6. c/c++教程 - 2.3 函数的提高 函数的形参列表默认值 占位参数 函数重载

    3. 函数的提高 目录 3. 函数的提高 3.1 函数的默认参数 3.2 函数占位参数 3.3 函数重载 (重要) 相关教程 3.1 函数的默认参数 C++中,函数的形参列表中的形参是可以有默认值的. ...

  7. 美丽的闭包,在js中实现函数重载

    引言 最近在js的学习中,看到了函数重载的问题,一开始,只看到了实现代码,看着代码冥思苦想了半个小时,总算是理清了其实现的原理,也为其实现的巧妙感到赞叹,也是在自己搞懂原理之后,去网络上搜索了下,才知 ...

  8. android 方法参数默认值,Kotlin函数默认值的完全讲解

    函数默认值 周所周知,Java语言并不支持参数使用默认值.有人说这是因为"默认参数"和"方法重载"同时支持的话有二义性的问题,具体真正的原因我不得而知.但是对我 ...

  9. ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map

    根据视频进行整理 [https://www.bilibili.com/video/BV1uK411H7on?p=1] 视频资源(百度网盘): 链接:[https://pan.baidu.com/s/1 ...

最新文章

  1. 那些消失的互联网中年人
  2. W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
  3. CIPAddressCtrl类的使用(IP地址与CString的互相转化)
  4. java对外查询接口注意的地方_Java接口注意点
  5. C++中的引用与指针的区别
  6. python程序打包_python之程序打包
  7. python 手机自动化操作_Python自动化办公之word操作
  8. Bentley.Hammer.XM.v08.09.400.34 1CD(水锤和瞬态分析软件)好用版\
  9. 同济版高数(下)复习提纲
  10. vs2019python使用教程_vs2019安装和使用详细图文教程
  11. 英语语音篇 - 音标体系
  12. 干货分享|Compare essay的写作方法
  13. html怎么在图中加字,用HTML代码在图片上加字
  14. nuc10黑苹果无法wifi上网
  15. 尘福通:智慧城市建设、运营、演进路径思考
  16. 老主板怎么接机箱前面的USB和mic
  17. ctf show-web入门 php特性篇部分题解
  18. 数据仓库十大主题;TeraData金融数据模型
  19. 【疑难问题】——Game中子弹的代码结构设计(未完)——是每个实例去监听某个事件
  20. 安装 Cartographer问题记录汇总

热门文章

  1. mysql installer图解_MySQL Installer GUI - 图解
  2. 很多都是python很简单吗,但是要如何才能入门python并精通呢?
  3. linux 源码安装e1000e,linux安装网卡e1000e
  4. 遍历 in java_Java script数组遍历for与for in的区别
  5. python搜题程序_智慧树Python程序设计基础搜题公众号
  6. Codeforces Round #700 (Div. 2) A ~ E ,6题全,超高质量良心题解【每日亿题】2021/2/8
  7. 【网络流】解题报告:luogu P3376 【模板】网络最大流
  8. CF476D Dreamoon and Sets (数学/思维)
  9. P1603 斯诺登的密码
  10. MySQL数值扩大一百倍_Mysql优化----一条SQL百倍提升之旅