繁体   English   中英

在函数外部调用var

[英]call var in function to outside the function

我试图在函数外部调用此变量,但结果未定义。 我知道没有var变量可以在全局范围内调用,但我不确定。 我也尝试在函数外部设置var并调用它,但也没有成功。 这是我的简化代码,谢谢:)

function function1() {
  $.getJSON('random.json')
    .success(successfunction)
    .error(failfunction);

  function successfunction(data) {
    testvar = (data.name);
  }
  function failfunction(error) {
    console.log(error);
  }
};

console.log(testvar);

使用$( document ).ajaxStop(function() {}来加载ajax之后的var。

它只是在方法范围内可见,您必须在函数外部声明它(在这种情况下表示全局),或者在函数调用中将其返回:

 var testvar2 = "var 2"; function function1() { // parse json return successfunction("data"); function successfunction(data) { testvar2 = "var glob"; var testvar = "var ret"; return testvar; } function failfunction(error) { console.log(error); } }; console.log(testvar2); console.log(function1()); console.log(testvar2); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

应该避免声明全局变量,这不是一个好习惯,请尝试将变量的范围定义得尽可能小。 如果任何其他js模块还声明了一个名为testvar2的变量,则可能会发生有趣的事情。

尝试在成功函数中添加返回testvar而不是调用testvar

调用成功函数

  function successfunction(data){
    testvar = "var";
    return testvar;
}

如果要全局作用域,请将变量附加到像window这样的全局对象

function successfunction(data){
    window.testvar = "var";
} 

这样,您将确保它成为全球性的。


但是,您应该注意, successfunction是将在以后运行的回调:它在超时之后且仅在ajax调用成功后才运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM