我今天尝试了一些东西,发现了一个我想要理解的行为。
但如果它被定义为这样
var b = ({a = 1, b = 1, c = 1}) => a + b + c;
b(); // throws error.
但如果它被定义为这样
var b = ({a = 1, b = 1, c = 1} = 0) => a + b + c;
b() // returns 3
b([]) // returns 3
这不应该是一个错误吗?零在这里怎么变成了一个对象?它是否与以下内容等效?
var b = ({a = 1, b = 1, c = 1} = {}) => a + b + c; // this is possible I guess.
我的问题不是关于常规的解构和默认参数如何工作,而只是关于如何评估这个特定场景。
有人能为我解释一下吗?
undefined
或null
作为参数都可以工作,但你也应该问问自己,0
是否是一个合理的默认值。 - Sebastian Simonsomething
也必须是可迭代的。数组、映射、集合、arguments
、HTMLCollection
等都可以工作,但其他非可迭代值将失败。除此之外,它的工作方式相同。 - Sebastian Simon