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

浙公网安备 33010602011771号