簡體   English   中英

為什么我不能從某些函數(JavaScript)內部訪問變量?

[英]Why I can't access variables from inside some functions (JavaScript)?

var myvar = "my value";

(function() {
  alert(myvar); // undefined
})();

要么

  var myvar = "my value";
  $.post( url,
  function( data ) {
    alert(myvar); // undefined
  });

以及如何解決此問題而不將這個值存儲在隱藏的輸入或div或其他html容器中?

如果將變量放在引用對其可訪問的范圍內,則一切正常。 您可以在這里看到第一個示例: http : //jsfiddle.net/jfriend00/WvnvC/

因此,您顯然沒有向我們展示整個圖片,並且您可能已在變量引用中聲明的范圍內聲明了該變量。 我們必須查看實際代碼或實際范圍才能知道問題所在。

此問題的常見來源是您在$(document).ready()處理程序(不是全局范圍)中定義了myvar ,然后嘗試從$(document).ready()之外$(document).ready()引用它。 $(document).ready()處理程序,使其無法訪問。 嘗試將myvar的定義放在實際的全局范圍內(而不是在任何其他函數內)或與您試圖從中引用該函數的范圍相同。

您可以將其聲明為全局變量(可以使用),但是在為此目的編寫JavaScript時,並不是最佳實踐。

最好的方法是將變量存儲在函數內部,在函數頂部

  $.post( url,
    function( data ) {
      var myvar = "my value";
      alert(myvar); // undefined
    });

如果您想在多種功能中使用它,我建議

(function($) {

     var myvar = "my value"; // To set this as a global, just remove the "var"

     $.post( url,
        function(data) {
          alert(myvar); // undefined
     });

})(jQuery);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM