lsq*_*key 5 javascript parameters default ecmascript-6
我完全理解ECMAScript 6已经创建了许多使用箭头函数等函数处理的潜在方法.
因为我不太熟悉新东西,所以在谈论函数的默认参数时.如何解释以下定义函数的方式之间的差异:
功能1:
function m1({x = 0, y = 0} = {}) {
return [x, y];
}
Run Code Online (Sandbox Code Playgroud)
功能2:
function m2({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
Run Code Online (Sandbox Code Playgroud)
m1
x
为和提供默认值y
,而m2
仅从提供的对象解构x
和y
,并且仅在对象本身未提供\xe2\x80\x99t 时才提供默认值:
m1({})
将返回[0, 0]
m2({})
将返回[undefined, undefined]
m1()
和m2()
都会返回[0, 0]
m1({x: 10})
将返回[10, 0]
m2({x: 10})
将返回[10, undefined]
因此,如果m2
接收到一个对象,它将解构变量x
和的可用值y
。如果缺少其中任何一个,则为 \xe2\x80\x99s undefined
。仅当整个对象丢失时,它\xe2\x80\x99 才会提供一个默认对象 ( { x: 0, y: 0 }
) 从中获取值。
m1
但是,为这两个属性提供默认值,即使它们\xe2\x80\x99 缺失。如果整个对象丢失,它\xe2\x80\x99仍将提供这些默认值。
归档时间: |
|
查看次数: |
358 次 |
最近记录: |