我希望澄清一些事情。
ES6为我们带来了扩展参数处理,使我们能够传递默认参数值。
function f (x, y = 7, z = 42) {
return x + y + z
}
f(1) === 50
这很好用。但是,如果我交换参数使它们看起来像(x = 7, y, z = 42)
,它将返回NaN
。
function f (x = 7, y, z = 42) {
return x + y + z
}
f(1) === 50
任何人都可以解释为什么会这样吗?
答案 0 :(得分:1)
将值传递给函数时,顺序很重要。在第一种情况下,您只将一个变量传递给函数。该值将分配给变量<div class="wrapper">
<div class="container flex">
<h1>header h1</h1>
<p>plain text</p>
</div>
</div>
。由于您只传递一个变量,因此假定其他参数的其余值为null。但是,由于您已为这些参数指定了默认值,因此该函数将尝试评估x
,该值将解析为50。
在第二种情况下,您传递1作为变量1 + 7 + 52
的值。由于参数x
未被分配,因此该函数将评估y
,这是1 + undefined + 42
类型。