2016-02-19 68 views
0

這裏我試圖在函數New()中使用一個變量,該變量是在函數Test()中創建的。在另一個函數中使用變量,然後調用新函數

我仍然對如何使用全局變量有點困惑。

function New(){ 
 
Test(); 
 
//this show nothing 
 
alert(myName); 
 
} 
 

 
function Test() { 
 
    myName = "John"; 
 
} 
 

 

 
New();

即使當我做 「VAR MYNAME」;這些功能超出,它不起作用。

仍在尋找

+0

上面的代碼適用於我。但是,您仍然沒有使用var聲明myName,所以它隱式地是全局的。 –

+0

其實它的一個例子,我使用流星的全局變量的多個函數,我猜這個工程 – teddym

回答

1

入住這fiddle

事情改變:

1)測試功能使用function New(){}代替function New{}

2)回報MYNAME並將其存儲在新變量新功能

function New(){ 

var myName= Test(); 

//this show nothing 
alert(myName); 
} 

function Test() { 
    var myName = "John"; 
    return myName 
} 

New(); 

更新:是啊ü也可以定義爲MYNAME全局變量,當你要聲明一個變量使用,使用var關鍵字用它

+0

感謝人很容易,以及它的週五抱歉我的大腦關閉 – teddym

+0

@teddym我的榮幸。好吧,它有時會發生:D XD –

0

。當你這樣做時,你所在的位置決定了變量的「範圍」。如果你想使用該變量兩種功能,你可以簡單地聲明這兩個變量外:

var myVariable = "Something"; 

function1(){ 
    myVariable = "something else"; 
} 

function2(){ 
    myVariable = "something else again"; 
} 

共享數據的另一種方法是,以這些數據作爲參數傳遞到函數:

function1(){ 
    var myVariable = "Something"; 
    function2(myVariable); 
} 

function2(someName){ 
    alert(someName); // "Something" 
} 

在你的情況下,你沒有使用「var」關鍵字來聲明你的變量,所以它變成了全局變量,但是你的代碼中有一個錯字,所以它沒有運行。

0

全局聲明myName,然後在Test()函數的返回中定義myName。在聲明函數時,無論如何都要使用關鍵字「function」,「()」和「{}」。

var myName; 
 

 
function New() { 
 
    
 
alert(Test()); 
 
} 
 

 
function Test() { 
 
    myName = "John"; 
 
    return myName; 
 
} 
 

 

 
New(Test);

0

它只是一個小錯誤類型。只需在新的後面添加大括號

var myName; // have myName global ie, outside all functions 

function New(){  // needs the braces() for New to be a function 
    Test(); 
    alert(myName); 
} 

function Test() { 
    myName = "John"; 
} 


New(); 
-1

全局變量是其範圍適用於特定類而不限於函數的東西。

您可以在類中但在函數之外創建變量myName,並在類中的任何位置使用它。

var myName=""; 

function New{ 
Test(); 
//this show nothing 
alert(myName); 
} 

function Test() { 
    myName = "John"; 
} 


New(); 
+0

儘管有一個「class」關鍵字,JavaScript並沒有使用實際的類。全局變量只是一個連接到主機環境全局對象的存儲位置。在瀏覽器中,這是窗口對象。 –

相關問題