Javascript 访问函数内部创建的对象

Javascript 访问函数内部创建的对象,javascript,function,object,return,Javascript,Function,Object,Return,我仍在学习,所以我可能会使用这个wronf(这可能就是为什么我至今没有通过搜索找到答案的原因),或者我可能一起做错了 基本上,我试图创建一个函数,当调用该函数时,它将创建一个对象(由其他对象组成)。如果我在函数外部创建这个Characters对象,我可以按预期访问它,但在函数内部创建后,我似乎无法访问它。我正在Chrome内置的控制台中测试 这是我的密码 function q1(ans) { //Are you male or female? "use strict";

我仍在学习,所以我可能会使用这个wronf(这可能就是为什么我至今没有通过搜索找到答案的原因),或者我可能一起做错了

基本上,我试图创建一个函数,当调用该函数时,它将创建一个对象(由其他对象组成)。如果我在函数外部创建这个
Characters
对象,我可以按预期访问它,但在函数内部创建后,我似乎无法访问它。我正在Chrome内置的控制台中测试

这是我的密码

function q1(ans) {      //Are you male or female?   
    "use strict";
    //store all above objects into new object
    if (ans === "male") {
        var Characters = {
            spike: spike,
            jet: jet,
            vicious: vicious
        };
    }
    if (ans === "female") {
    //store all above objects into new object
        var Characters = {
            faye: faye,
            julia: julia,
            ed: ed
        };
    }
    return Characters;
}
(对象
spike
jet
vice
(等)在别处定义,可以无任何问题地访问。)

如果我调用我的函数
q1(“男性”)
控制台似乎记录了
Characters
对象已创建,但如果我随后尝试通过键入
Characters
来访问它,则会出现错误(ReferenceError:未定义字符)。如果我要在函数外部创建这个Characters对象,然后尝试如上所述访问它,那么这样做很好。这让我相信我没有正确地归还它(或者我完全做错了别的事情)。我错过了什么


提前感谢您的帮助。

这是由于范围所限。这意味着角色只在函数内部活动,因此您不能在函数外部访问它。您需要做的是设置一个新变量,该变量等于调用函数时的返回值。这样,您就可以在函数外部引用返回的变量,并在以后使用它

 var male = q1("male")

由于您已经定义了超出
q1
范围的字符,因此需要通过从方法返回字符来重新分配
字符
变量

因此,重新分配字符应该可以解决问题。
另一个非常糟糕的方法是不使用
var字符
,而是使用
Characters=…
,但请记住,使用全局变量根本不推荐,而且是一种非常糟糕的做法。

如果您这样做
var Chars=q1(“男性”)
返回值将是非常有意义的。谢谢。请不要建议做全球作业。