gpt4 book ai didi

javascript - 数组在函数中重置

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:26 25 4
gpt4 key购买 nike

场景 1

var a = [1, 2, 3];

function isChanged(a) {
a = [];
}
isChanged(a);
console.log(a);

场景 2

var a = [1, 2, 3];

function isChanged(stack) {
while (stack.length != 0) {
stack.pop();
}
}
isChanged(a);
console.log(a);

为什么第一个函数中数组不为空,但使用第二个函数时数组却为空?

编辑:

我尝试通过赋值来更改变量,并覆盖其属性。

场景 3 - 更改对象的属性

var a = {
prop: "Stackoverflow"
}

function change(a) {
a.prop = "stack"
}
change(a)
console.log(a)

场景 4 - 更改整个变量本身

var a = {
prop: "Stackoverflow"
}

function change(a) {
a = {
"prop": "stack"
}
}
change(a);
console.log(a);

最佳答案

在第一个示例中,当您设置 a = []; 时,您仅更改了局部变量 a,该变量(在赋值之后)不再有任何关系到恰好具有相同名称的全局变量。在第二个示例中,您直接修改 stack 变量,该变量恰好与全局变量 a 是同一对象。如果您要执行 stack =whatever ,它的行为将与第一个示例类似。

关于javascript - 数组在函数中重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44611376/

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