![](/img/trans.png)
[英]In this JavaScript code, why can some functions access internal variables and others not?
[英]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.