mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
edit docs/function
This commit is contained in:
parent
ee5962043e
commit
857944c681
@ -86,11 +86,48 @@ fetch('http://example.com')
|
||||
|
||||
上面代码中,调用函数`fetch`时,第二个参数默认为一个空对象,而只要有第二个参数,`method`参数就默认为`GET`。
|
||||
|
||||
请问下面两种写法有什么差别?
|
||||
|
||||
```javascript
|
||||
// 写法一
|
||||
function m1({x = 0, y = 0} = {}) {
|
||||
return [x, y];
|
||||
}
|
||||
|
||||
// 写法二
|
||||
function m2({x, y} = { x: 0, y: 0 }) {
|
||||
return [x, y];
|
||||
}
|
||||
```
|
||||
|
||||
上面两种写法都对函数的参数设定了默认值,区别是写法一对`x`和`y`设定了默认值,写法二没有。
|
||||
|
||||
```javascript
|
||||
// 函数没有参数的情况
|
||||
m1() // [0, 0]
|
||||
m2() // [0, 0]
|
||||
|
||||
// x和y都有值的情况
|
||||
m1({x: 3, y: 8}) // [3, 8]
|
||||
m2({x: 3, y: 8}) // [3, 8]
|
||||
|
||||
// x有值,y无值的情况
|
||||
m1({x: 3}) // [3, 0]
|
||||
m2({x: 3}) // [3, undefined]
|
||||
|
||||
// x和y都无值的情况
|
||||
m1({}) // [0, 0];
|
||||
m2({}) // [undefined, undefined]
|
||||
|
||||
m1({z: 3}) // [0, 0]
|
||||
m2({z: 3}) // [undefined, undefined]
|
||||
```
|
||||
|
||||
通常情况下,定义了默认值的参数,都是函数的尾参数。因为这样比较容易看出来,到底省略了哪些参数。但是,非尾部的参数,也是可以设置默认值的。
|
||||
|
||||
```javascript
|
||||
// 例一
|
||||
function f(x=1, y) {
|
||||
function f(x = 1, y) {
|
||||
return [x, y];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user