如何在javascript中访问函数内的变量

时间:2014-04-28 06:43:54

标签: javascript

我有代码:

var here;
function setNews(data2){
    here = data2;
    console.log(here);//1st console log
}
console.log(here);//2nd console log

在第一个控制台日志中,这里的数据被打印,但在第二个控制台日志中,它打印未定义如何访问setNews函数内的数据,以便我可以在setNews之外使用它。

谢谢。

6 个答案:

答案 0 :(得分:2)

您可能需要检查一下您的架构。

var here;
function setNews(data2){
    here = data2;
    console.log(here);//1st console log
}
//executed immediatly, `here` is not yet initialized by setNews
console.log(here);//2nd console log

当加载javascript时,变量'here'正在输出到控制台,但由于它未定义,控制台显示'undefined'。

稍后你调用setNews('sample')时,它会设置全局变量here,但没有意义,因为它已经输出了。

答案 1 :(得分:1)

var here;
function setNews(data2){
    here = data2;
    console.log("inside function " +here);//1st console log
}
setNews("something");
console.log("outside function" +here);//2nd console log

Fiddlehttp://jsfiddle.net/bmArj/

答案 2 :(得分:0)

//将其初始化为所需的值。

var here = "your value";

答案 3 :(得分:0)

我认为......使用return ...

var here = setNews(2);

function setNews(data2){
    here = data2;
    console.log(here);//1st console log

    return here;
}
console.log(here);//2nd console log

答案 4 :(得分:0)

请阅读JavaScript Variable and Function Hoisting上的这篇文章。

当您第一次声明变量here时,发生了什么,它没有被初始化。 当您在here函数中提供setNews()值时,其值console.log无法使用。 因此,您需要首先调用setNews(),然后在第二次调用控制台中显示here的内容,如下所示:

var here;
function setNews(data2){
    here = data2;
    console.log(here);//1st console log
}
setNews("some data here");
console.log(here);//2nd console log, it will display "some data here"

答案 5 :(得分:0)

如果你想定义一个变量,(让它称之为“here”)自动设置为某个名为“setNews”的函数的值,那么这可能会更好:

var here,
    data2 = "the news!";

// Set value of "here" to processed data2
here = (function (news) {
    // Process news
    news = "This is " + news;
    return news;
})(data2);

console.log(here);
// Prints "This is the news!"