[英]How to make a variable which is inside a function global?
以下是我的 javascript 函數,我想使用在函數外部選擇的變量,但我在檢查元素的控制台中選擇了未定義錯誤。 window.yourGlobalVariable 沒有解決我的問題。
function showMe(pause_btn) {
var selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
如果你真的希望它是全球性的,你有兩個選擇:
全局聲明它,然后在函數中關閉var
:
var selected; function showMe(pause_btn) { selected = []; for (var i = 0; i < chboxs.length; i++) { if (chboxs[i].checked) { selected.push(chboxs[i].value); } } }
分配給window
屬性
function showMe(pause_btn) { window.selected = []; for (var i = 0; i < chboxs.length; i++) { if (chboxs[i].checked) { selected.push(chboxs[i].value); // Don't need `window.` here, could use it for clarity though } } }
window
的屬性是全局變量(您可以在它們前面使用或不使用window.
訪問它們)。
但是,我會避免讓它成為全球性的。 要么讓showMe
返回信息:
function showMe(pause_btn) {
var selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
return selected;
}
...然后是你需要的地方:
var selected = showMe();
...或在包含showMe
的范圍內聲明它,但不是全局聲明。 沒有上下文,這看起來與上面的 #1 完全一樣; 這里有一些背景:
(function() {
var selected;
function showMe(pause_btn) {
selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
return selected;
}
// ...other stuff that needs `selected` goes here...
})();
外部匿名函數是一個“作用域函數”,這意味着selected
不是全局的,它只是該函數中的任何內容的共同點。
我建議不要將它分配給 window 對象或在函數之外聲明它,而是建議在函數之外創建自己的對象,然后從那里分配變量。 這避免了窗口對象的混亂,並將所有全局變量放在一個地方,使它們易於跟蹤。 例如,
var globalObject {}
function MyFunction {
globalObject.yourVariableName=what your variable is
}
做這個:
var selected;
function showMe(pause_btn) {
selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
您實際上可以跳過var selected;
的var selected;
行,但我更喜歡聲明我的變量。
不要使用這個;
selected = [];
這是javascript的錯誤
window.selected = [];
在你的函數里面。
您可以在定義名為showMe
的函數的范圍內定義名為selected
的數組。
在代碼方面:
var selected = [];
function showMe(pause_btn) {
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
var selected = [];
function showMe(pause_btn) {
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
如果您將selected
聲明為 window 對象的一個屬性,您將能夠從其他任何地方訪問它。
function showMe(pause_btn) {
window.selected = [];
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
selected.push(chboxs[i].value);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.