当前位置: 首页 > news >正文

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 {
  // ...
}

相关文章:

  • 免费流程图制作网站/免费个人网站建站
  • 做网站的是什么专业/推动高质量发展
  • 百度云域名怎么做网站/seo推广灰色词
  • 武汉疫情网易/优化网站首页
  • 网站目录做跳转/seo1视频发布会
  • 苏州网站地址/游戏推广员怎么做
  • C++关于初始化列表的细节(必须/不能使用初始化列表的情况、初始化列表的效率分析)
  • 安卓手机使用Linux Deploy安装CentOS
  • 2022年度盘点|FinClip 扩展SDK推荐
  • 拷贝实体的工具类---BeanObjectCopyUtils
  • 【机器学习 - 5】:多元线性回归
  • MySQL数据库中有字段类型是日期,时间的插入语句处理
  • 论文阅读笔记:Attention is All You Need
  • musl pwn 入门 (3)
  • SpringCloud——config远程连接github 踩坑
  • 筑基一层 —— 高质量C编程建议、详解猜数字游戏
  • vue-循环引用感想
  • Linux网络编程——多路IO转接服务器设计