首页 > 汽车评测 > 正文

es5 如何操作ES5与ES6环境下处理函数默认参数

2023-10-15 03:29:39 | 找车网

今天找车网小编整理了es5 如何操作ES5与ES6环境下处理函数默认参数相关信息,希望在这方面能够更好的大家。

es5 如何操作ES5与ES6环境下处理函数默认参数

es5和es6的区别

ES5(ECMAScript5)和ES6(ECMAScript6)的区别是:变量声明、箭头函数、模块化。

1、变量声明:ES5使用var关键字来声明变量,而ES6引入了let和const关键字。let关键字用于声明块级作用域的变量,解决了ES5中变量提升和作用域的问题。const关键字用于声明常量,它代表一个不可改变的值。这样更加清晰地定义和管理变量,提高代码的可读性和可维护性。

2、箭头函数:ES6引入了箭头函数(Arrow Functions),它提供了一种简洁的语法来定义函数。箭头函数可以更简洁地表达函数的定义和使用,并且自动绑定了函数的上下文,避免了this指向的问题。这使得代码更加简洁、易读和维护。

3、模块化:ES6引入了模块化的概念,通过import和export关键字来实现模块的导入和导出。这使得开发者可以将代码分割成多个模块,并对外暴露需要导出的功能,从而提高了代码的可复用性。在ES5中,开发者通常使用自定义的模块加载器或第三方库来实现类似的功能。

ES6(ECMAScript6)特色: 找车网

1、块级作用域(Block Scoping):ES6引入了let和const关键字,使得变量可以绑定在最近的块(花括号)中,而不是函数作用域。这解决了ES5中变量提升和作用域的问题,提供更好的变量管理和代码可读性。

2、箭头函数(Arrow Functions):箭头函数提供了一种更简洁的函数声明语法。它们不需要使用function关键字,可以使用更短的语法来定义函数,并且自动绑定了函数上下文,消除了传统函数中this指向的问题。

3、解构赋值(Destructuring Assignment):解构赋值允许我们从数组或对象中提取值并赋给变量。它可以简化对数组和对象的操作,并提高了代码的可读性。

4、类和模块化(Classes and Modules):ES6引入了类的概念,可以通过class关键字定义类,并使用extends关键字实现继承。另外,ES6还引入了模块化的语法,通过import和export关键字进行模块的导入和导出,增强了代码的可维护性和复用性。

es5 如何操作ES5与ES6环境下处理函数默认参数

如何操作ES5与ES6环境下处理函数默认参数


这次给大家带来如何操作ES5与ES6环境下处理函数默认参数,操作ES5与ES6环境下处理函数默认参数的注意事项有哪些,下面就是实战案例,一起来看一下。
函数默认值是一个很提高鲁棒性的东西(就是让程序更健壮)
MDN关于函数默认参数的描述:函数默认参数允许在没有值或undefined被传入时使用默认形参。
ES5
使用逻辑或||来实现
众所周知,在ES5版本中,并没有提供的直接方法供我们我们处理函数默认值
所以只能够自己去增强函数的功能,一般会这么来做:
function doSomething (name, age) {
name = name || 'default name'
age = age || 18
console.log(name, age)
}我们将函数的两个参数name与age进行默认值的处理,如果没有则使用默认值。
在执行一下函数后,好像并没有什么不对:
doSomething() // default name, 18
doSomething('Niko') // Niko , 18
doSomething(, 12) // default name, 12然而当我们执行这样的代码时,就会获得一些超出预期的结果:
doSomething('Niko', 0) // Niko, 18能够发现,对于参数0,我们上边的默认参数实现方法是有问题的
就像下边的四个表达式,都会输出wrong,这很显然不能够满足上边MDN关于函数默认参数的定义:
console.log(0 || 'wrong')
console.log('' || 'wrong')
console.log(null || 'wrong')
console.log(false || 'wrong')正确的姿势
所以,在ES5中正确的默认值处理应该是这样:
function doSomething (name, age) {
if (name === undefined) {
name = 'default name'
}
if (age === undefined) {
age = 18
}
console.log(name, age)
}使用三元运算符简化操作
或者我们简写成三元运算符形式的:
function doSomething (name, age) {
name = name === undefined ? 'default name' : name
age = age === undefined ? 18 : age
console.log(name, age)
}使用函数进行封装
但是如果我们每写一个函数,都要重复的去做这些操作
未免太麻烦了,所以,我们对这个逻辑进行一个简单的封装:
function defaultValue (val, defaultVal) {
return val === undefined ? defaultVal : val
}
function doSomething (name, age) {
name = defaultValue(name, 'default name')
age = defaultValue(age , 18)
console.log(name, age)
}这样就很简洁的在ES5实现了函数默认参数的逻辑
one momre things
关于上边的defaultValue函数实现方法,我们在合理的使用弱类型语言的优势后
可以使用这种方式来省去三元运算符的操作:
function defaultValue () {
return arguments[+(arguments[0] === undefined)]
}我们知道,arguments表示函数所有的实参
我们使用arguments[0]获取第一个实参,然后与undefined进行全等比较
在外层将表达式的结果转换为Number,然后将这个值作为下标获取arguments中对应的参数。
因为是由Boolean值转变而来,所以只会存在0、1两种选项。
也就实现了上边三元运算符的功能。
ES6
ES6版本的函数默认值基本上就是我们上边实现的那种套路了
但是因为是原生的,所以会有相应的新语法,能够更简洁的使用:
function doSomething (name = 'default name', age = 18) {
console.log(name, age)
}ES6中提供了新的语法,可以让我们在函数声明参数后边直接写= [defaultValue]的这种形式来设置某个参数的默认值。
直接使用这种方式,省去了在函数内部进行默认值的检查,能够让函数专注的做它应该做的事情。
如何针对某些必填参数抛出异常
ES6这种新语法能够让我们很好的针对某个必填参数进行错误提醒:
function requireParams () {
throw new Error('required params')
}
function doSomething (name = requireParams(), age = 18) {
// do something
}如果name参数为undefined,就会触发默认值规则
然后调用requireParams函数,而我们在函数中直接throw了一个Error
复杂结构参数的默认值处理
上边的处理都是针对简单的基本类型数据进行处理的,但如果我们有如下的一个函数:
function init ({id, value}) {}
init({
id: 'tagId',
value: 1
})如果在ES5环境下,针对这种参数的默认值处理将会变得无比复杂
首先要判断这一个参数是否存在,然后在判断参数中的所有key是否存在
而在ES6中,可以这样来做:
function init ({
id = 'defaultId',
value = 1
} = {}) {
console.log(id, value)
}
init()首先在解构函数的后边添加默认值= {},然后针对每一项参数添加默认值,很简洁的就实现了我们的需求。
ES5版本的polyfill代码在仓库中的位置:defaultValue
相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
怎样优化js async函数

如何使用node搭建服务器,写接口,调接口,跨域

es5 如何操作ES5与ES6环境下处理函数默认参数

es5奇人是什么?

《偶像梦幻祭》es五奇人如下:

朔间零:自称不是人类是吸血,并包含吸血特质(怕太阳,喜欢血和睡棺材)。

日日树涉:喜欢各种惊奇。因此想法和行为都很奇怪。

深海奏汰:喜欢海洋生物,非常了解海洋,但自己是旱鸭子。

斋宫宗:不听意见,独自思考,大概因为是人偶师,稍微精分倾向。

逆先夏目:喜欢各种跟人反着来,自称会魔法。

《偶像梦幻祭》背景设定

《偶像梦幻祭》中“私立梦之咲学院”中共三个年级,拥有37位学生,每个年级有A、B两个班级,1-A班有5个人,1-B、2-A、2-B班各有6个人,3-A、3-B班各有7个人。

在平时的日常上课与练习中,学生们通常是以统一的学生制服形象登场的。角色的年级可以通过领带的颜色区分,一年级是红色,二年级是蓝色,三年级是绿色。

另外还有两位老师,分别是兼负责学生们身体健康状况和正常教学职责于一身的保健室医生佐贺美阵、负责学生会指导等行政方面工作以及授课的严格老师门章臣;以及来自玲明学院和秀越学院的四名学生组成的外校组合。

以上就是找车网小编给大家带来的es5 如何操作ES5与ES6环境下处理函数默认参数全部内容,希望对大家有所帮助!
与“es5 如何操作ES5与ES6环境下处理函数默认参数”相关推荐
蔚来es6尺寸 蔚来es6参数
蔚来es6尺寸 蔚来es6参数

全新蔚来ES6上市开启交付36.8万起售新增激光雷达日前,全新蔚来ES6迎来正式上市,新车推出75kWh电池和100kWh电池两款车型,分别售价36.8万和42.6万。若采用Baas电池租用方案,售价为29.8万,75kWh电池租赁费用为980元/月,100kWh电池租赁费用为1680元/月。新车基于蔚来NT2.0平台打造,主要针对智能化以及底盘等方面进行升级。外形方面,全新

2023-10-09 13:30:29
蔚来es5 蔚来et5 suv版或命名为es5
蔚来es5 蔚来et5 suv版或命名为es5

爆料者称特斯拉ModelY发售当天,蔚来遭遇大规模退单,此消息属实吗?关于蔚来车主退订单的事件,蔚来公司回应,该消息为谣言,并不属实。近日,在元旦当天,特斯拉宣布其国产高端电动SUVModelY将开始上市,而更重要的消息是,这次销售的ModelY将有超过十万元以上的价格降幅,其中ModelY高性能版本降价14万,市场价格只要36.99万元,而长续航版本则降价超过16万,只要33.99

2023-10-03 17:38:19
汽车价格参数牌如何制作 汽车车牌号是如何编写的
汽车价格参数牌如何制作 汽车车牌号是如何编写的

汽车车牌号是如何编写的车牌第一位是汉字:代表该车户口所在的省级行政区,为各(省、直辖市、自治区)的简称,比如:北京就是京,上海就是沪,湖南就是湘,重庆就是渝,山东就是鲁,江西就是赣,福建就是闽。车牌第二位是英文字母:代表该车户口所在的地级行政区,为各(地级市、地区、自治州、盟)字母代码,一般按省级车管所以各地级行政区状况分划排名:字母“A”为省会、首府或直辖市中心城区的代码,其后字母

2023-09-15 23:14:13
北汽ex360参数配置如何
北汽ex360参数配置如何

北汽新能源ex360刹车松不开北汽新能源ex360刹车松不开有以下原因。1、踏板老化,刹车踏板老化导致刹车松开时卡死,造成无法松开的情况。2、偏心轴生锈,车辆偏心轴生锈,刹车无法松开,最好更换偏心轴或清除锈迹。3、春季老化,回位弹簧老化,导致弹簧弹力不足,导致刹车无法释放的情况,有必要更换老化的弹簧。4、操作不当,操作出现了问题,需要修正操作方式后再尝试松闸。5、刹车片磨

2023-09-29 19:43:37
汽车价格如何查看车型参数 汽车参数怎么看
汽车价格如何查看车型参数 汽车参数怎么看

汽车参数怎么看女生买车,一分钟看懂参数1.【排量】:有1.0L,1.8L、1.4T、2.0T等,排量越大,动力越强,油耗就越大。2.【动力】:看进气方式,有L和T之分,L是容积升的单位,表示汽车发动机的排气量,对应自然吸气的发动机;T是涡轮增压,1.5L车型的油耗要比1.5T车型的油耗低。3.【汽油标号】:标号越高,抗爆性越好,但不是标号越高越好,还要与发动机相匹配。简单

2023-09-15 02:50:20
汽车价格参数牌如何制作 价格标签用什么软件制作
汽车价格参数牌如何制作 价格标签用什么软件制作

价格标签用什么软件制作你可以试试标签打印软件,它适用于各个行业的标签,接下来以一个简单的价签为例,你可以参考一下:现在市面上很多大大小小的服装店,在每次来货时,除了衣服上自带的服装吊牌,大多店铺或公司根据需要来制作一个简易的服装价签,贴在吊牌上,以便货品管理,本文我们就可变数据软件来看一下如何制作服装价签并批量生成?一、打开可变数据软件,在文档设置中将纸张尺寸设置为和实际纸张尺

2023-09-15 23:14:47
0y y=0的隐函数是什么?
0y y=0的隐函数是什么?

y=0的隐函数是什么?解题过程如下:由方程e^y+xy-e=0确定的函数是y=f(x),因此在对方程两边对于X求导时,要把y看成是x的函数,这样就可以得到e^y*y'+y+xy'=0从而得到y'=-y/(e^y+x)注:y'=dy/dx如果方程F(x,y)=0能确定y是x的函数,那么称这种方式表示的函数是隐函数。而函数就是指:在某一变化过程中,

2023-09-24 20:05:38
vivos5手机参数配置处理器详情(什么时候多少钱一个)
vivos5手机参数配置处理器详情(什么时候多少钱一个)

vivos5手机参数配置处理器详情(什么时候多少钱一个)2019年11月14日晚,vivo发布了一款时尚的手机vivoS5,吸引了用户以其独特的几何菱形四摄引人注目。这款手机也是爱豆坤代言的,而且字quot时尚quot从外观到功能到代言人无处不在。但我们不是这样肤浅的人。除了外观,vivoS5其实quot非常有趣quot。让让我们通过十个细节来快速了解一下这款手机。01为

2023-09-11 00:46:17