2011-06-24 41 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

他們是對的。我錯了。 –