#独家
es6的函数可以定义多个可选参数吗?

2023-04-10 0 3,570

es6的函数可以定义多个可选参数吗。比如

function sayHello(a:string, b?:string, c?:string){

}

我觉得是不可以的,但看到项目中有这么写的

对 ES5 而言,所有的参数都是可选参数,反而是必选参数的约束要靠开发者自己实现;
ES6 提供了默认参数,比 ES5 进步了不少,但由于 ES6 是向下兼容 ES5 的(ES6 运行时可以运行按照 ES5 标准写的旧代码),所以实际上 ES6 函数所有的参数也还是全部可选,对参数的约束仍旧是靠开发者自己实现;
真正有“必选参数+可选参数”概念的,是 TS ,TS 对此可选参数的静态约束是“可选参数不能放在必选参数前面”,只要符合这个约束即可,对可选参数的数量则不作约束。
而且常见 JS 运行时提供的一些函数,比如Array.prototype.pushMath.maxconsole.logsetTimeout等都是有不限数量的可选参数的。
还有一个函数 CanvasRenderingContext2D.prototype.drawImage 非常典型,其重载让人眼花缭乱:

drawImage(image:ImageLike, dx:number, dy:number):void;
drawImage(image:ImageLike,  dx:number, dy:number, dWidth:number, dHeight:number):void;
drawImage(image:ImageLike, sx:number, sy:number, sWidth:number, sHeight

在JS(无论ES6以上还是以下)里,函数被调用时,并不会检查传入的参数数量是否符合定义时的数量。
所以利用这个特性,JS可以实现任意数量的可选参数

比如定义function func(a, b, c, d),你用func(1, 2, 3, 4)func(1, 2, 3)func(1, 2)func(1) 甚至func()都是合法的。此时缺失的参数,在函数体内的值为undefined

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 es6的函数可以定义多个可选参数吗? https://www.jkxiazai.com/1489.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务