function demo(a, b) 中的 a 和 b)demo(1, 2) 中的 1 和 2)function demo(a = 10, b = 20) {
log('parameters a,b =', a, b);
log('arguments.length =', arguments.length);
log('arguments[0], arguments[1] =', arguments[0], arguments[1]);
log('---');
}
在使用預設參數的函數中,parameters 和 arguments 之間存在重要差異:
parameters:會受到預設值的影響,如果未提供值或傳遞 undefined,會使用預設值arguments:反映了實際傳遞的值,不受預設值影響a = 10, b = 20(使用預設值)length = 0(沒有傳任何值)a = 10(undefined 被替換為預設值), b = 99arguments[0] = undefined, arguments[1] = 99(反映實際傳遞的值)a = null(null 不會觸發預設值), b = 99arguments[0] = null, arguments[1] = 99(反映實際傳遞的值)