2012-07-17 60 views
3

它发生在我,我不知道是什么的范围逗号delimeted变量

var foo='bar', 
baz = 'bar'; 

范围。

显然foo是本地作用域,但是在baz上必须使用var关键字才能在本地作用域,或者我的示例已在本地作用域?

+0

看起来如http://stackoverflow.com/questions/1470488/difference-between-using-var-and-not-using-var-in-javascript – yadutaf 2012-07-17 18:36:52

回答

4

它们都将在相同的范围内结束。

var foo = 'bar', 
    baz = 'bar'; 

只是简称:

var foo = 'bar'; 
var baz = 'bar'; 

左右的时间内,例如一个函数,既foobaz将成为局部变量,即使你只申报var一次。

JSLint这样的工具实际上预计var关键字只能使用一次,所以如果你想遵守这一点,你应该使用第一个例子。

1

这确实是一个非常有趣的问题。 JavaScript充满了边界案例。

在这篇博文中:http://scribu.net/blog/javascript-var-keyword-for-php-developers.html,作者给出了一些使用或不使用'var'关键字的例子。

为了使长话短说,

  • 不声明变量是全球
  • 声明变量是当地,它允许 “覆盖” 的全局变量。
+1

有一个逗号亚特酒吧的副本...不是分号。 – jahroy 2012-07-17 18:43:10

+0

http://bonsaiden.github.com/JavaScript-Garden/#function.scopes将人们联系到范围解释非常有趣:D(至少部分是因为侧边栏非常漂亮) – Alex 2012-07-17 18:48:06