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

8fq7wneg  于 2023-04-05  发布在  jQuery
关注(0)|答案(4)|浏览(147)

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

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>

上面的代码只是我的示例,以便于理解我正在尝试做什么。这只是出于教育目的。我只是想以这种方式获得结果。或者有没有一种方法可以在函数内设置一个全局变量,并将其用于该函数外的另一个函数?

up9lanfz

up9lanfz1#

怎么办?
在全局作用域中创建变量是一个非常不好的做法。你不应该这么做,因为它会导致冲突,特别是在未来的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
∮ ∮ ∮

dfty9e19

dfty9e192#

全局变量总是可以从任何地方访问的。但这可能会帮助你更好地理解它:

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;
}
ecbunoof

ecbunoof3#

var testvar;
$(document).ready(function(){
  test1();
});

function test1(){
  return test2();
}

function test2(){
 var a = "Hellow World";
  testvar = a;
}

console.log(testvar);

test2()未被调用。需要调用它来重新声明变量
https://jsfiddle.net/uwzapwrk/

bf1o4zei

bf1o4zei4#

我用这个方法,它对我很有效

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()上

相关问题