在 Javascript 中设置全局数组的值不起作用
Setting value for global array in Javascript doesn't work
我正在尝试根据函数调用的指定 options/values 通过函数调用设置全局变量。这是我的代码:
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();
但是控制台输出是 "undefined",我想知道为什么? local_Pl 应该根据 prepare() 中的参数从 getInfo 中设置一个值,该值必须为“5”:
s = 1;
g_Pl[s] = 5;
为什么不起作用?
您正在使用 pl
和 local_Pl
作为 out
参数,也就是 pass by reference
参数或 ByRef
,但 JavaScript 没有支持该功能。您应该改为 return 结果,如下所示:
function getInfo(s, map) {
switch (map) {
case "test":
return g_Pl[s];
}
}
function test() {
let local_Pl = getInfo(1, "test");
console.log(local_Pl);
}
如果您需要 return 某些东西并且还有一个输出参数,那么您可以创建一个对象来包含这两个对象和 return 该对象。
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);
}
我正在尝试根据函数调用的指定 options/values 通过函数调用设置全局变量。这是我的代码:
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();
但是控制台输出是 "undefined",我想知道为什么? local_Pl 应该根据 prepare() 中的参数从 getInfo 中设置一个值,该值必须为“5”:
s = 1;
g_Pl[s] = 5;
为什么不起作用?
您正在使用 pl
和 local_Pl
作为 out
参数,也就是 pass by reference
参数或 ByRef
,但 JavaScript 没有支持该功能。您应该改为 return 结果,如下所示:
function getInfo(s, map) {
switch (map) {
case "test":
return g_Pl[s];
}
}
function test() {
let local_Pl = getInfo(1, "test");
console.log(local_Pl);
}
如果您需要 return 某些东西并且还有一个输出参数,那么您可以创建一个对象来包含这两个对象和 return 该对象。
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);
}