簡體   English   中英

如何從 javascript 中的 function 訪問全局變量

[英]how to access global variable from function in javascript

我正在嘗試從 function 訪問全局變量,我想從 function 變量內部調用外部變量。這就是我嘗試過的。 注意:從 html 下拉選擇中單擊查詢 function 后,查詢 function 應該可以工作。 感謝您的幫助。

HTML
<select  name="myInput" id="choice1">
       <li><option value="6011">apib_cadastral:bivel</option></li>
       <li><option value="6012">apib_cadastral:burhchaura</option></li>
 </select>

javascript
var layer_name;
function query() {
  var text_value = document.getElementsByName('myInput')[0];
  var layer_name = text_value.options[text_value.selectedIndex].text;
}
query();
var config = {
  geojson: layer_name,
};

刪除 function 中的“var”。 這樣您就可以定義一個存在於 function 中的新變量。

您應該以這種方式更改您的代碼。 因為,當您在 query() 中重新聲明變量時,它將占用 memory 中具有不同地址的另一個單元格。 而且,配置 object 中的變量無法訪問它。 它將訪問包含未定義值的 layer_name [first defined]

var layer_name ;
function query() {
    var text_value = document.getElementsByName('myInput')[0]
    layer_name = text_value.options[text_value.selectedIndex].text;
}
query();
var config = {
geojson: layer_name
}

In addition to other answers, which correctly state that you should remove var from the variable declaration inside the query() function, you could change the function to return the value, rather than relying on shared/global state.

function query() {
  var text_value = document.getElementsByName('myInput')[0];
  return text_value.options[text_value.selectedIndex].text;
}

var config = {
  geojson: query()
};

請注意,這可能會對性能產生影響,具體取決於您調用query()的次數,因為每次都必須計算返回值,但從減輕對共享/全局 state 的需求的角度來看,值得考慮。

另請注意,考慮用更現代的const替換varlet ...

  • const當變量被初始化並且永遠不需要更改時。
  • 當變量需要更改超出初始化時, let
function query() {
  const text_value = document.getElementsByName('myInput')[0];
  return text_value.options[text_value.selectedIndex].text;
}

const config = {
  geojson: query()
};

暫無
暫無

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

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