Установка значения для глобального массива в Javascript не работает - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь установить глобальную переменную с помощью вызова функции на основе указанных параметров / значений вызова функции.Вот мой код:

    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 предполагается установить значение из getInfo, которое должно быть "5" на основе параметров в prepare ():

s = 1;
g_Pl[s] = 5;

Почему это не работает?

1 Ответ

0 голосов
/ 14 февраля 2019

Вы используете pl и local_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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...