gpt4 book ai didi

javascript - 在 Javascript 中为全局数组设置值不起作用

转载 作者:行者123 更新时间:2023-11-30 19:48:44 26 4
gpt4 key购买 nike

我正在尝试根据函数调用的指定选项/值通过函数调用设置全局变量。这是我的代码:

    let g_Pl = [];

function prepare() {
let s = 0;

s = 1;
g_Pl[s] = 5;

s = 2;
g_Pl[s] = 8;

s = 3;
g_Pl[s] = 10;
}

function getInfo(s,map,pl) {
switch (map) {
case "test":
pl = g_Pl[s];
break;
}
}

function test() {
let local_Pl;

getInfo(1, "test", local_Pl)

console.log(local_Pl);
}

prepare();
test();

但是控制台输出是“未定义的”,我想知道为什么? local_Pl 应该根据 prepare() 中的参数从 getInfo 中设置一个值,该值必须为“5”:

s = 1;
g_Pl[s] = 5;

为什么它不起作用?

最佳答案

您正在使用 pllocal_Pl 作为 out 参数,又名 pass by reference 参数或 ByRef,但 JavaScript 不支持该功能。您应该返回结果,如下所示:

function getInfo(s, map) {
switch (map) {
case "test":
return g_Pl[s];
}
}

function test() {
let local_Pl = getInfo(1, "test");
console.log(local_Pl);
}

如果您需要返回一些东西并且还有一个 out 参数,那么您可以创建一个包含这两个参数的对象并返回该对象。

function getInfo(s, map) {
var element;
switch (map) {
case "test":
element = g_Pl[s];
break;
}
return { found: !!element, pl: element };
}

function test() {
let result = getInfo(1, "test");
if (result.found) console.log(result.pl);
}

关于javascript - 在 Javascript 中为全局数组设置值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688617/

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