gpt4 book ai didi

javascript - 为什么重新分配参数不适用于具有默认值的参数?

转载 作者:行者123 更新时间:2023-12-04 14:36:53 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why is the value of parameter not redefined in this case?

(1 个回答)


4 个月前关闭。




我有一个非常奇怪的问题,我不知道它是如何发生的。
当我用 arguments[0] = 42 重新分配一个参数时. arguments[0]和第一个参数 a都是 42 .这是预期的。

function foo(a, b, c) {
arguments[0] = 42;
console.log(a, arguments[0]);
}

foo(1, 2, 3);

但是当我尝试使用具有默认值的参数的函数时,第一个值 a不再被重新分配。有人可以解释这种差异吗?

function foo(a, b, c = 3) {
arguments[0] = 42;
console.log(a, arguments[0]);
}

foo(1, 2, 3);

最佳答案

有一个note在关于这个的规范中 - 你只能得到一个映射 arguments当您在函数声明中不使用 ES6+ 语法(或在严格模式下)时(重点是我的):

NOTE: A mapped argument object is only provided for non-strictfunctions that don't have a rest parameter, any parameter defaultvalue initializers, or any destructured parameters


当您使用 default parameter ,您的参数对象不会被映射,就像您在 strict-mode 时不会被映射一样:

function foo(a, b, c) {
"use strict";
arguments[0] = 42;
console.log(a, arguments[0]);
}

foo(1, 2, 3); // 1 42

关于javascript - 为什么重新分配参数不适用于具有默认值的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68344891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com