2009-07-22 108 views
6

我該怎麼做?在javascript中使用全局變量

我的代碼是這樣的:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    var number = '10'; 

    alert(''+[number]+''); 
} 

第一個提醒總是返回「老字號是:」不10.如果不是在第二函數調用兩個警報返回10?

+0

該死你們大家!感謝所有的答案如此之快。 – ian 2009-07-22 18:53:58

+1

你爲什麼寫 alert('old number was:'+ [number] +''); 而不是 alert('old number was:'+ number); 因爲它會提醒一個數組裏面有一個項目,而不是項目(數字) – 2009-07-22 19:19:26

+0

嗯不知道但它的作品。我不認爲它會查找任何數組,因爲我將空白空間放在右側+'';或者可能不是我不知道。 – ian 2009-07-22 19:28:13

回答

15

通過每段時間設定數=「10」,您聲明number作爲一個局部變量在使用var。試試這個:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    number = '10'; 

    alert(''+[number]+''); 
} 
11

刪除函數前面的數字。你被

var number = 10; 

創建一個局部變量,你所需要的僅僅是

number = 10; 
3

的問題是,你聲明名爲number功能的內部新的變量。這個新變量隱藏全局變量number,所以行​​只分配給這個新的局部變量。

您需要從var number = 10中刪除var關鍵字。

1

和C一樣,你需要在函數/方法之外定義你的變量來使它成爲全局變量。

var number = 0; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 
    number = '10'; 
    alert(''+[number]+''); 
} 
1

你也可以在window.number之類的任何函數中,在刪除var裏面的函數之後訪問它。

0

讓我詳細解釋,在Javascript中聲明全局變量和局部變量

var firstNumber=5;//local variable 
secondNumber=10; //global variable or window object 

當你的程序是這樣的

var number =1; 
function playSong() { 
    alert(number); 
    var number =2; 
    alert(number); 
} 

按照JavaScript的編譯器變量的所有聲明/初始化將移動到頂部這個概念叫做吊裝。 鏈接:https://www.w3schools.com/js/js_hoisting.asp

按編譯程序將執行類似

var number; //Declaration will move to top always in Javascript 
number=1; 
function playSong() { 
    var number; 
    alert(number); //output : undefied - This is local variable inside the function 
    number =2; 
    alert(number); // output : 2 
} 

如果您需要訪問函數內使用全局變量window.number

var number =1; 
function playSong() { 
    var number =2; 
    alert(window.number); // output : 1 -From Global variable 
    alert(number); // output : 2 -From local variable 
}