我已經試過這樣:用療法的功能之外的局部變量在JavaScript
function a_function(){
var data = "information";
});
console.log(data);
我已經試過這樣:用療法的功能之外的局部變量在JavaScript
function a_function(){
var data = "information";
});
console.log(data);
你不能。您需要在該範圍之外創建一個變量並將其分配給它:
var data;
function a_function(){
data = "information";
});
a_function();
console.log(data);
已經發布了另一個答案,提及瞭解範圍。遵循這個建議,儘量讓你早點掌握它,這將在未來爲你節省很多麻煩。
說真的,這是編程101. – durbnpoisn
雖然我感覺很慷慨 - 我們都必須從某個地方開始! – millerbr
您不需要更早地聲明'data'變量。當你調用'a_function()''data'時會自動變成全局變量。 – FixerRB
如果你想ecapsulate data
,但使用它的功能a_function
之外,你需要返回data
並調用a_function
。像這樣的東西應該工作:
function a_function() {
var data = "information";
return data;
};
var data = a_function();
注意,由於範圍,data
裏面的功能比data
功能外不同。如果您不在功能外部創建名爲data
的新變量,則您將無法訪問data
,因爲它在外部範圍中不存在。
下面的代碼演示範圍:
function a_function() {
var data = "information";
return data;
};
var data = "different information";
var data2 = a_function();
console.log(data);
console.log(data2);
從代碼的輸出將產生:
different information
information
你需要了解的範圍,以及它如何工作。
http://www.w3schools.com/js/js_scope.asp
https://en.wikipedia.org/wiki/Scope_%28computer_science%29#JavaScript
例如,在函數聲明的變量在該功能只存在。一旦你這個fonction外,變量被刪除,因此是不確定的
技術上就可以了,但它通常是不是一個好主意:
function a_function() {
data = "information";
}
a_function();
console.log(data);
這部作品的原因是因爲,由沒有使用var
關鍵字來聲明變量,JavaScript(正在使用它的很好的小動態語言)正在寫入「當前」對象的data
屬性,即window
。因此,可以全球訪問。它基本上是這樣做的相當於:
function a_function() {
window['data'] = "information";
}
a_function();
console.log(window['data']);
正如我所說,這是一般不是一個好主意。其它方法包括返回值:
function a_function() {
var data = "information";
return data;
}
var data = a_function();
console.log(data);
或者可能產生在更大範圍內的值,並在功能設置它:
var data;
function a_function() {
data = "information";
}
a_function();
console.log(data);
基本上,一般要維護範圍和控制流和儘可能避免使用「全局變量」。
你要麼必須將價值傳遞給被執行console.log(共享的範圍變量)調用,如:
var data;
function a_function(){
//note the ommission of the 'var' keyword
data = "information";
});
a_function();
console.log(data);
,或者你必須有函數返回值,並使用該作爲輸入到日誌()方法:
function a_function(){
var data = "information";
return data;
}
console.log(a_function());
或包裹在你的函數從在其範圍內調用一個輔助函數的執行console.log()調用,傳遞數據作爲參數:
function log(data){
console.log(data);
}
function a_function(){
var data = "information";
log(data);
}
編輯:正如其他人所提到的,雖然我們可以告訴你所有的方法來做到這一點,但更好地瞭解範圍並理解人們爲什麼建議工作。
多一點代碼或你想要實現什麼的進一步描述將不勝感激。 – Cludch