如何访问函数外部的Javascript变量值

时间:2012-05-23 05:39:01

标签: javascript arrays function variables

我一直在用一块砖墙敲打我的头,这一块和另一块都没有成功。我想要做的是访问函数内但在该函数之外的数组中设置的值。怎么可以这样做?例如:

function profileloader()
{
    profile = [];
    profile[0] = "Joe";
    profile[1] = "Bloggs";
    profile[2] = "images/joeb/pic.jpg";
    profile[3] = "Web Site Manager";
}

然后,我会在段落标记内的页面下面进一步显示:

document.write("Firstname is: " + profile[0]);

显然,这将包含在脚本标记中,但我得到的是控制台上的错误,说明:“profile [0]未定义”。

任何人都有任何想法我错了?我似乎无法弄清楚,在将值从函数传递到函数或函数之外时,我所看到的其他解决方案都没有。到目前为止,这些解决方案都没有。

感谢任何可以帮助我的人,这可能是我错过的简单事情!

2 个答案:

答案 0 :(得分:4)

由于var前面没有profile=[];,因此它存储在全局窗口范围内。

我怀疑你在使用之前忘记调用profileloader()。

优良作法是以明显的方式声明您的全局变量,如本页其他答案所示

依靠副作用被认为是不错的做法。


注释代码以显示正在发生的事情,注意不推荐的方法:

这应该有效。它确实有效:DEMO

function profileloader()
{
    profile = []; // no "var" makes this global in scope
    profile[0] = "Joe";
    profile[1] = "Bloggs";
    profile[2] = "images/joeb/pic.jpg";
    profile[3] = "Web Site Manager";
}
profileloader(); // mandatory
document.write("Firstname is: " + profile[0]);

答案 1 :(得分:3)

在函数外部声明它,以便外部作用域可以看到它(但要注意全局变量)

var profile = [];
function profileloader(){
    profile[0] = "Joe";
    profile[1] = "Bloggs";
    profile[2] = "images/joeb/pic.jpg";
    profile[3] = "Web Site Manager";
}

或让函数返回它:

function profileloader(){
    var profile = [];
    profile[0] = "Joe";
    profile[1] = "Bloggs";
    profile[2] = "images/joeb/pic.jpg";
    profile[3] = "Web Site Manager";
    return profile;
}

var myprofile = profileloader(); //myprofile === profile