我有代码:
var here;
function setNews(data2){
here = data2;
console.log(here);//1st console log
}
console.log(here);//2nd console log
在第一个控制台日志中,这里的数据被打印,但在第二个控制台日志中,它打印未定义如何访问setNews函数内的数据,以便我可以在setNews之外使用它。
谢谢。
答案 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
Fiddle
:http://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!"