2021.04.26(函数参数的尾逗号、Function.prototype.toString()、catch 命令的参数省略)

函数参数的尾逗号

ES2017 允许函数的最后一个参数有尾逗号(trailing comma)。
此前,函数定义和调用时,都不允许最后一个参数后面出现逗号。

1.  function clownsEverywhere(
2.  param1,
3.  param2
4.  ) { /* ... */ }
5.
6.  clownsEverywhere(
7.  'foo',
8.  'bar'
9.  );

上面代码中,如果在 param2  或 bar  后面加一个逗号,就会报错。

如果像上面这样,将参数写成多行(即每个参数占据一行),以后修改代码的时候,想为函
数 clownsEverywhere  添加第三个参数,或者调整参数的次序,就势必要在原来最后一个参数后面添
加一个逗号。这对于版本管理系统来说,就会显示添加逗号的那一行也发生了变动。这看上去有点冗
余,因此新的语法允许定义和调用时,尾部直接有一个逗号。

1.  function clownsEverywhere(
2.  param1,
3.  param2,
4.  ) { /* ... */ }
5.
6.  clownsEverywhere(
7.  'foo',
8.  'bar',
9.  );

这样的规定也使得,函数参数与数组和对象的尾逗号规则,保持一致了。

Function.prototype.toString()

ES2019 对函数实例的 toString()  方法做出了修改。
toString()  方法返回函数代码本身,以前会省略注释和空格。

1.  function /* foo comment */ foo () {}
2.
3.  foo.toString()
4.  // function foo() {}

上面代码中,函数 foo  的原始代码包含注释,函数名 foo  和圆括号之间有空格,但
是 toString()  方法都把它们省略了。

修改后的 toString()  方法,明确要求返回一模一样的原始代码。

1.  function /* foo comment */ foo () {}
2.
3.  foo.toString()
4.  // "function /* foo comment */ foo () {}"

catch 命令的参数省略

JavaScript 语言的 try...catch  结构,以前明确要求 catch  命令后面必须跟参数,接
受 try  代码块抛出的错误对象。

1.  try {
2.  // ...
3.  } catch (err) {
4.  // 处理错误
5.  }

上面代码中, catch  命令后面带有参数 err  。
很多时候, catch  代码块可能用不到这个参数。但是,为了保证语法正确,还是必须写。ES2019
做出了改变,允许 catch  语句省略参数。

1.  try {
2.  // ...
3.  } catch {
4.  // ...
5.  }

 

2021-04-26  14:11:51

posted @ 2021-04-26 14:12  铁打的代码流水的bug  阅读(86)  评论(0)    收藏  举报