2016-02-11 89 views

回答

7

你不能。您需要在該範圍之外創建一個變量並將其分配給它:

var data; 
function a_function(){ 
    data = "information";  
}); 
a_function(); 
console.log(data); 

已經發布了另一個答案,提及瞭解範圍。遵循這個建議,儘量讓你早點掌握它,這將在未來爲你節省很多麻煩。

+0

說真的,這是編程101. – durbnpoisn

+0

雖然我感覺很慷慨 - 我們都必須從某個地方開始! – millerbr

+0

您不需要更早地聲明'data'變量。當你調用'a_function()''data'時會自動變成全局變量。 – FixerRB

1

如果你想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 
3

技術上就可以了,但它通常是不是一個好主意

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); 

基本上,一般要維護範圍和控制流和儘可能避免使用「全局變量」。

1

你要麼必須將價值傳遞給被執行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); 
} 

編輯:正如其他人所提到的,雖然我們可以告訴你所有的方法來做到這一點,但更好地瞭解範圍並理解人們爲什麼建議工作。