Javascript jQuery:如何从一个函数设置全局变量并将其访问到另一个函数?

Javascript jQuery:如何从一个函数设置全局变量并将其访问到另一个函数?,javascript,jquery,Javascript,Jquery,如何从一个函数到另一个函数声明、设置和访问全局变量 var-testvar; $(文档).ready(函数(){ test1(); }); 函数test1(){ 返回testvar; } 函数test2(){ var a=“Hellow World”; testvar=a; } 你要怎么做? 在全局范围内创建变量是非常糟糕的做法。您不应该这样做,因为它可能会导致冲突,特别是在未来的JavaScript版本中 您可以从作用域或对象运行函数,请尝试: var shared = {}; $(doc

如何从一个函数到另一个函数声明、设置和访问全局变量

var-testvar;
$(文档).ready(函数(){
test1();
});
函数test1(){
返回testvar;
}
函数test2(){
var a=“Hellow World”;
testvar=a;
}
你要怎么做? 在全局范围内创建变量是非常糟糕的做法。您不应该这样做,因为它可能会导致冲突,特别是在未来的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()
我们可以选择在对象范围内运行函数。我不擅长解释,了解更多


全局变量总是可以从任何地方访问。但这可能有助于您更好地理解它:

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;
}
未调用test2()。需要调用它才能重新声明变量


我使用这种方法,它适合我

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()被执行之后工作,并且您可以执行另一个FunctionName(),其中变量was存储在somefunctionname()上。

function test2(){var a=“Hellow World”;
var testvar=a;
}好吧,您的示例中的问题是永远不会调用
test2
。如果您调用它并记录
test1
的返回值,您会看到您所做的工作是有效的。幸运的是,您不必这样做,jQuery有
$。当您声明它时,数据拼写错误
testvar
var-tsetvar
@CatalinSterian不设置全局变量,它将在test2()的范围内创建一个新变量
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
}