JavaScript中实现函数重载和参数默认值
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中实现函数重载和参数默认值相关推荐
- Javascript中的函数重载-最佳做法
用JavaScript伪造函数重载的最佳方法是什么? 我知道不可能像其他语言一样重载Javascript中的函数. 如果我需要两个函数一起使用foo(x)和foo(x,y,z) ,这是最佳/首选方式: ...
- 浅谈Javascript中的函数重载实现
其它面向对象语言如Java的一个常见特性是:能够根据传入的不同数量量或类型的参数,通过"重载"函数来发挥不同的功用.但是这个特性在Javascript中并没有被直接支持,可是有很多 ...
- 【TS】函数重载--可选参数--默认参数
可选参数–默认参数 在ts中定义的数据类型,某些情况下只需要传入定义数据类型的一部分参数,比如:id .name.age.address,此时需要修改用户的名称,那么只需要传入id.name就够了:某 ...
- ES6: 参数默认值及中间域
下午看了一章 ECMA-262 by Dmitry Soshnikov, 现在稍稍来小结下ES6中的参数默认值以及由此产生的参数中间作用域. 原文地址: http://dmitrysoshnikov. ...
- C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)
每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...
- c/c++教程 - 2.3 函数的提高 函数的形参列表默认值 占位参数 函数重载
3. 函数的提高 目录 3. 函数的提高 3.1 函数的默认参数 3.2 函数占位参数 3.3 函数重载 (重要) 相关教程 3.1 函数的默认参数 C++中,函数的形参列表中的形参是可以有默认值的. ...
- 美丽的闭包,在js中实现函数重载
引言 最近在js的学习中,看到了函数重载的问题,一开始,只看到了实现代码,看着代码冥思苦想了半个小时,总算是理清了其实现的原理,也为其实现的巧妙感到赞叹,也是在自己搞懂原理之后,去网络上搜索了下,才知 ...
- android 方法参数默认值,Kotlin函数默认值的完全讲解
函数默认值 周所周知,Java语言并不支持参数使用默认值.有人说这是因为"默认参数"和"方法重载"同时支持的话有二义性的问题,具体真正的原因我不得而知.但是对我 ...
- ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
根据视频进行整理 [https://www.bilibili.com/video/BV1uK411H7on?p=1] 视频资源(百度网盘): 链接:[https://pan.baidu.com/s/1 ...
最新文章
- 那些消失的互联网中年人
- W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
- CIPAddressCtrl类的使用(IP地址与CString的互相转化)
- java对外查询接口注意的地方_Java接口注意点
- C++中的引用与指针的区别
- python程序打包_python之程序打包
- python 手机自动化操作_Python自动化办公之word操作
- Bentley.Hammer.XM.v08.09.400.34 1CD(水锤和瞬态分析软件)好用版\
- 同济版高数(下)复习提纲
- vs2019python使用教程_vs2019安装和使用详细图文教程
- 英语语音篇 - 音标体系
- 干货分享|Compare essay的写作方法
- html怎么在图中加字,用HTML代码在图片上加字
- nuc10黑苹果无法wifi上网
- 尘福通:智慧城市建设、运营、演进路径思考
- 老主板怎么接机箱前面的USB和mic
- ctf show-web入门 php特性篇部分题解
- 数据仓库十大主题;TeraData金融数据模型
- 【疑难问题】——Game中子弹的代码结构设计(未完)——是每个实例去监听某个事件
- 安装 Cartographer问题记录汇总
热门文章
- mysql installer图解_MySQL Installer GUI - 图解
- 很多都是python很简单吗,但是要如何才能入门python并精通呢?
- linux 源码安装e1000e,linux安装网卡e1000e
- 遍历 in java_Java script数组遍历for与for in的区别
- python搜题程序_智慧树Python程序设计基础搜题公众号
- Codeforces Round #700 (Div. 2) A ~ E ,6题全,超高质量良心题解【每日亿题】2021/2/8
- 【网络流】解题报告:luogu P3376 【模板】网络最大流
- CF476D Dreamoon and Sets (数学/思维)
- P1603 斯诺登的密码
- MySQL数值扩大一百倍_Mysql优化----一条SQL百倍提升之旅