如何从一个函数声明,设置和访问全局变量?
var testvar;
$(document).ready(function(){
test1();
});
function test1(){
return testvar;
}
function test2(){
var a = "Hellow World";
testvar = a;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
上面的代码只是我的样本,可以让我轻松理解我想要做的事情。这仅用于教育目的。我只想以这种方式得到结果。或者有没有办法在函数中设置一个全局变量并将其用于该函数之外的另一个函数?
答案 0 :(得分:1)
在全局范围内创建变量是非常不良做法。您不应该这样做,因为它可能会在以后的JavaScript版本中导致冲突,尤其是。
您可以从范围或对象运行函数,尝试:
var shared = {};
$(document).ready(function () {
test1.call(shared);//undefined
test2.call(shared);
test1.call(shared);//foo
});
function test1 () {
alert(this.testvar);
}
function test2 () {
var a = 'foo';
this.testvar = a;
}
简单来说,这会将所有变量存储在对象(shared
)中。您可以使用this.
代替var
来声明“共享变量”。通过使用.call()
,我们可以选择在对象的范围内运行该函数。我不是最擅长解释,了解更多here
答案 1 :(得分:0)
全球变量始终可以从任何地方访问。但这可能有助于您更好地理解它:
var testvar;
$(document).ready(function(){
console.log(testvar); // outputs: undefined
test2();
console.log(testvar); // outputs Hello World
console.log(test1()); //outputs Hello World
});
function test1(){
return testvar;
}
function test2(){
var a = "Hellow World";
testvar = a;
}
答案 2 :(得分:0)
var testvar;
$(document).ready(function(){
test1();
});
function test1(){
return test2();
}
function test2(){
var a = "Hellow World";
testvar = a;
}
console.log(testvar);
不调用test2()。需要调用它才能重新声明变量
答案 3 :(得分:0)
我使用这种方法,它对我有用
function somefunctionname(){
// Some action
anotherfunctionname(put_your_value);
}
function anotherfunctionname(put_parameter_as_you_want){
var some_var = put_parameter_as_you_want;
// Some action with your var
}
此方法在执行somefunctionname()之后起作用,并且您可以执行将变量存储在somefunctionname()上的anotherfunctionname()