美文网首页
ES6新特性有哪些?快来看看吧(四)

ES6新特性有哪些?快来看看吧(四)

作者: 向前走不要停 | 来源:发表于2022-03-11 22:43 被阅读0次

今天讲一下函数的扩展;

ES6允许为函数的参数设置默认中,直接写在参数定义的后面。

使用参数默认值时,函数不能有同名的参数。

如果参数的变量是默认声明的,再次用let 或者const声明会报错

参数默认值可以与解构赋值的默认值,结合使用

上面的例子别没有使用函数参数的默认值,只有当函数fn的参数是一个对象时,变量x和y才会通过解构赋值生成。如果函数fn调用时没有提供参数,变量x和y就不会生成,从而报错。

通过函数体参数的默认值,就可以避免这种情况。

参数默认值的位置

一般来说,定义了默认值的参数,应该是函数的尾参数,这样比较容易看的出来,

如果是非尾部参数设置默认值,这个参数是没法省略的。

如果传入undefined ,将触发该参数 等于默认值,null则没有这个效果;参数默认值生效的前提是:解构失败或者解构的值严格上等于undefined;

函数的length属性

指定的默认以后,函数的length属性,将返回没有指定默认值的参数的个数。也就是说指定默认值后,length属性失真。

但是如果设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数了

rest参数

在ES6中rest参数形式为(...变量名)

作用:用于获取函数的多余参数,这样就不需要使用arguments对象了。

rest参数搭配的变量是一个数组,将变量多余的参数放入数组中;

接着看下面例子;

arguments对象不是数组,而是一个类似数组的对象,需要通过Arroyo.form()才能使用数组的方法,而rest不用,他就是一个真正的数组,数组特有的方法都可以使用。

严格模式

从ES5中,函数内部可以设定为严格模式,

ES6中,规定只要函数参数使用了默认值,解构赋值,或者扩展运算符,那么函数内部就不能显示设置为严格模式,否则会报错。

name属性

函数的name属性返回函数的名字

如果一个匿名函数赋值给了一个变量,ES5的name属性,会返回空字符串,而ES6的name属性会返回实际的函数名。

相关文章

网友评论

      本文标题:ES6新特性有哪些?快来看看吧(四)

      本文链接:https://www.haomeiwen.com/subject/zlbcdrtx.html