以下JavaScript函数应在显示undefined
值时应显示实际值:
<script>
function addArrayNew(a = [101], c) {
document.write('A: ' + a[0] + '<br>');
document.write('B: ' + a + '<br>');
document.write('C: ' + c + '<br>');
}
addArrayNew(110);
</script>
手动输出:
A: undefined
B: 110
C: undefined
预期输出:
A: 101
B: 101
C: 110
在您的示例中,110
作为第一个(也是唯一一个)参数传递,因此它将覆盖由a
插入的c
(将变为undefined
)。最好将可选参数放在最后,然后可以将更多或更少的参数传递给函数:
<script>
function addArrayNew(c, a = [101]) {
document.write('A: ' + a[0] + '<br>');
document.write('B: ' + a + '<br>');
document.write('C: ' + c + '<br>');
}
addArrayNew(110);
</script>
这是由于addArrayNew
的功能描述将a
作为第一个参数,并将c
作为第二个参数。因此,无论您传递的是addArrayNew(110)
的第一个值(仅设置为a
),还是传递addArrayNew(110, 100)
的第一个值,然后是c。如果您只想发送第二个参数并想将a
设置为默认值,则可以像下面这样传递undefined
:
function addArrayNew(a = [101], c) {
document.write('A: ' + a[0] + '<br>');
document.write('B: ' + a + '<br>');
document.write('C: ' + c + '<br>');
}
addArrayNew(undefined, 110);
通过传递undefined
,我们实际上是在强迫a
使用默认值。但是好的做法是始终使用最后一个可选参数,因此默认情况下将它们设置为undefined
,例如:
function addArrayNew(c, a = [101]) {
document.write('A: ' + a[0] + '<br>');
document.write('B: ' + a + '<br>');
document.write('C: ' + c + '<br>');
}
addArrayNew(110);
这里,使用addArrayNew(110)
或addArrayNew(110, undefined)
将给您相同的结果。但是,当您将拥有大量的od参数时,您真的可以理解最后使用默认值的重要性:
function addArrayNew(a, b=1, c=2, d=3, e=4, f=5) {
document.write(`${a} - ${b} - ${c} - ${d} - ${e} - ${f}`);
}
addArrayNew(110);