Передача локальных переменных из функции в глобальные переменные - PullRequest
2 голосов
/ 17 августа 2011

Последние два часа я пытался понять, как это сделать, но ничего не получается. Вот краткий пример моего кода. Я хочу получить arrtime и несколько других подобных переменных из функции, чтобы я мог использовать их глобально. Есть идеи? Ничего сложного, пожалуйста, я не эксперт (очевидно).

function showTest(str) {
........

        var arrayvals = JSON.parse(xmlhttp.responseText);
        var arrtime= (arrayvals[0]);
}
var testvar=arrtime;
document.getElementById("testing").innerHTML=testvar;   

Ответы [ 4 ]

7 голосов
/ 17 августа 2011

Чистый способ сделать это - использовать нотацию js-объекта:

function showTest(str) {
    //other code
    return {arr: arrayvals, tm: arrtime};
}

var func_result = showTest("blah-blah");
var testvar =func_result.tm;
var testvar2=func_result.arr;

Но вообще плохая идея иметь глобальные переменные. Зачем тебе это?

Обновление образца кода с global объектом

globals = {};
function q(){
    globals['a'] = 123;
    globals[123] = 'qweqwe';
}
function w(){
    alert(globals.a);
    //alert(globals.123); //will not work
    alert(globals[123]); //that's OK.
}
q();
w();
1 голос
/ 17 августа 2011

Вы можете объявить переменные вне функции.

var arrtime, arrayvals;

function showTest(str) {
        arrayvals = JSON.parse(xmlhttp.responseText);
        arrtime= (arrayvals[0]);
}
var testvar=arrtime;
alert (testvar);
0 голосов
/ 17 августа 2011

Вы просто должны опустить var, который указывает переменную, которая доступна только из области действия функции.

0 голосов
/ 17 августа 2011
var testvar;
function showTest(str) {
........

        var arrayvals = JSON.parse(xmlhttp.responseText);
        var arrtime= (arrayvals[0]);
        testvar = arrtime;
}
alert (testvar);

Глобальный объект должен быть объявлен вне оценки функции, но назначен внутри области действия функции.

...