ES6学习笔记值函数扩展
Posted BennuCTech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6学习笔记值函数扩展相关的知识,希望对你有一定的参考价值。
函数参数的默认值
ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。
参数默认值可以与解构赋值的默认值,结合起来使用。
注意下面两种写法的不同
function m1(x = 0, y = 0 = )
return [x, y];
function m2(x, y = x: 0, y: 0 )
return [x, y];
第一个x和y分别有默认值,第二个默认值则是一个对象。
比如x 有值,y 无值的情况:
m1(x: 3) // [3, 0]
m2(x: 3) // [3, undefined]
通常情况下,定义了默认值的参数,应该是函数的尾参数。因为这样比较容易看出来,到底省略了哪些参数。如果非尾部的参数设置默认值,实际上这个参数是没法省略的。
如果传入undefined,将触发该参数等于默认值,null则没有这个效果。
function foo(x = 5, y = 6)
console.log(x, y);
foo(undefined, null)
// 5 null
length
指定了默认值以后,函数的length
属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length
属性将失真。
注意:如果设置了默认值的参数不是尾参数,那么length
属性也不再计入后面的参数了。
省略
利用参数默认值,可以指定某一个参数不得省略,如果省略就抛出一个错误。
function throwIfMissing()
throw new Error('Missing parameter');
function foo(mustBeProvided = throwIfMissing())
return mustBeProvided;
foo()
// Error: Missing parameter
另外,可以将参数默认值设为undefined
,表明这个参数是可以省略的。
rest 参数
ES6 引入 rest 参数(形式为...变量名
),用于获取函数的多余参数,这样就不需要使用arguments
对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。
函数的length
属性,不包括 rest 参数。
name 属性
函数的name
属性,返回该函数的函数名。
函数参数的尾逗号
ES2017 允许函数的最后一个参数有尾逗号。
function clownsEverywhere(
param1,
param2,
) /* ... */
clownsEverywhere(
'foo',
'bar',
);
此前,函数定义和调用时,都不允许最后一个参数后面出现逗号,否则报错。
catch 命令的参数省略
javascript 语言的try…catch结构,以前明确要求catch命令后面必须跟参数,ES2019开始允许catch语句省略参数。
try
// ...
catch
// ...
以上是关于ES6学习笔记值函数扩展的主要内容,如果未能解决你的问题,请参考以下文章