+-
显示未定义值的默认数组

以下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
1
投票

在您的示例中,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>
0
投票

这是由于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);