2012-12-26 62 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)

尝试,并尽可能使用局部变量,也不会被命名他们以同样的方式,你命名你的全局迷惑自己。