2011-06-24 77 views
1

关于, 局部变量 ...变量VAR没有

function foo(){var x = 1; ...} 

...和全局变量,...
(全球性的,例如1)

function foo(){x = 1; ...} 

(全球,示例2)

var x=1; function foo(){...} 

......,只剩下(简单)的组合是:

x=1; function foo{...} 

...我测试,发现它也创造了一个全局变量(如例2),但有这方面的任何实际的理由最后的例子? 注意:我通常喜欢遵循约定并编写可读代码,远离“古怪”。

+0

_what_的实际原因? –

+0

'...为最后的例子'。我将编辑该问题。 –

+0

这和第二个例子是一样的..一个全局变量。你希望能够在全局上下文中生成一个全局变量,对吧? –

回答

3

这是因为JavaScript是一种动态语言。它允许你使用一个变量而不用声明它。正如你所讨论的,你应该总是声明变量以消除混淆。如果你没有,JSLint/JSHint会投诉。

你的“(全球,例子1)”是错误的。那不会创建一个全局变量。

function foo() { x = 1; } 
function bar() { 
    alert(x); 
} 
foo(); 
bar(); 

编辑我错了。 http://jsfiddle.net/awuzA/

+0

x是不是全球?:function foo(){x = 1; ...} –

+0

这个人是错的吗? “如果一个变量在没有var的函数内初始化,它将具有全局范围。”来源:http://www.webdevelopersnotes.com/tutorials/javascript/global_local_variables_scope_javascript.php3 –

+0

他们是对的。我错了。 –