将函数中的局部变量传递给全局变量

时间:2011-08-17 12:50:07

标签: javascript variables global local

我花了最后两个小时试图弄清楚如何做到这一点,但没有任何工作。这是我的一些代码的简短示例。我想从函数中得到arrtime和其他几个类似的变量,所以我可以在全局使用它们。有任何想法吗?没有什么太复杂请,我不是专家(显然)。

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

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

4 个答案:

答案 0 :(得分:7)

干净的方法是使用js-object表示法:

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 :(得分:1)

您可以在函数之外声明变量。

var arrtime, arrayvals;

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

答案 2 :(得分:0)

var testvar;
function showTest(str) {
........

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

全局将在函数的分数之外声明,但在函数范围内分配。

答案 3 :(得分:0)

您只需省略var,表示只能从功能范围访问的变量。