簡體   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