簡體   English   中英

如何從全局范圍訪問函數中的變量?

[英]How can I access variables in a function from the global scope?

我無法從全局范圍訪問函數中的變量。 通常我可以在其他函數中訪問變量。

如何在全局范圍內的以下代碼中使用str變量?

 <html>
 <script>
 function myf(){
 str = "Change";
 document.write(str); 
 }
 document.write(str); // can not access str
 </script>
 <input type="button" value="OPEN" onclick="myf();">
 </html>

全局聲明str以明確設置其范圍。

var str;
function myf(){
  str = "Change";
  document.write(str); 
}
myf();
document.write(str); // can access str

請記住,如果沒有調用myf() ,則str的值仍然是undefined

通常,由於依賴關系問題,您不想在函數內部修改全局變量。 考慮類似:

function myf() {
  return "Change";
}
document.write(myf());

或者,如果您需要狀態:

function myf() {
  var state = "Change";
  return {
    get_state: function () {
      return state;
    },
    set_state: function () {
      //
    }
  }
}

var f = myf();
document.write(f.get_state());

除了您必須以正確的順序運行代碼外,您的工作方式…。

目前您是:

  1. 定義 (但不運行)用於設置str並將其寫入文檔的函數(刪除流程中的現有文檔)
  2. 嘗試使用該變量
  3. 單擊運行該功能並為變量賦值的按鈕

您必須交換最后兩個任務的順序……並停止在函數內部使用document.write

在使用變量之前聲明變量也是一種好習慣(在JavaScript嚴格模式下是必需的)。 您應該將var str放在腳本的頂部。

暫無
暫無

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

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