2012-12-26 95 views
0

我有很多這樣的功能,我不知道應該讓j和k成爲局部變量還是會有任何異常問題?本地還是全球?

var j=10,k=20; 
var i=j+k*2; 
console.log('helloworld'+i); 
function plus(j,k){ 
var i=j+k; 
console.log('plus '+i); 
//...etc 
} 

function formular(j,k){ 
var i=j*k+123; 
console.log('formular '+i); 
//...etc 
} 
plus(-10,-20); 
setInerval(function(){formular(22,33)},1000); 
setInerval(function(){plus(-102,-33)},1000); 

或者我應該寫這樣

function(var j, var k){ } 

+3

你可以給實際的例子,而不是奇怪的函數與命名不當的變量?我和j幾乎完全用作for循環中的循環變量 – mplungjan

回答

0
var j=10,k=20; 
var i=j+k*2; 
console.log('helloworld'+i); 

這裏,ijk既是全球性的(假設你的代碼是在全球性);

function plus(j,k){ 
var i=j+k; 
console.log('plus '+i); 
//...etc 
} 

這裏,jki是本地的,因爲jk在函數參數列表定義和i的內部函數定義。

上面兩個不會衝突;試試這個:fiddle demo。按任意順序按下兩個按鈕。

雖然我並不是說你的代碼是一種很好的做法。請記住,全局變量應謹慎使用

0

這是非常糟糕的做法。應該在JavaScript中謹慎使用全局變量。命名與全局變量名稱相同的函數參數更加糟糕,並且會很快引起混淆。

不,你不應該寫 功能(VAR R,變種K)

嘗試,並儘可能使用局部變量,也不會被命名他們以同樣的方式,你命名你的全局迷惑自己。