<code>
function obj() {
return {x:5}
};
function mon({x=0,y=0}=obj()){
return [x,y];
};
let a=mon({x:3,y:8});
let b=mon({x:3});
let c=mon({});
let d=mon();
//a=[3,8];b=[3,0];c=[0,0];d=[5,0]
</code>
执行过程:1> 判断<code>mon</code>的实参是否为<code>undefined</code>,如果是,则 <code>mon</code>的参数取值为<code>obj()</code>,也即是<code>{5:0}</code>。
如果不是<code>undefined</code>,那么参数就是<code>mon</code>的实参。
2> 代码中<code>{x=0,y=0}=obj()</code>中,<code>{x=0,y=0}</code>是给参数变量<code>x</code>,<code>y</code>指定的默认值,实参中如果相应的键不是<code>undefined</code>,
就取实参的值,否则去形参的值。
eg: <code>let a=mon({x:3,y:8})</code>中,实参<code>{x:3,y:8}!=undefined</code>,所以会<code>{x=0,y=0}={x:3,y:8}</code>,然后在判断变量<code>x</code>,<code>y</code>的值都不是<code>undefined</code>,
所以最终的参数为<code>{x:3,y:8}</code>。
有说的不对地方欢迎各位指正!
<blockquote>ECMAScript6入门.pdf</blockquote>