2012-02-22 112 views
3

$ onevar one在JavaScript中有什麼區別?因爲兩者都有效。

實施例:

$one = 'hello word!'; 

var one = 'hello word!'; 

工作實施例:http://jsfiddle.net/rS9PR/

+1

將$放在變量的前面是jQuery的匈牙利表示法。請不要這樣做。 – Daff 2012-02-22 18:08:11

+0

one ='hello word!'; // global scope, var one ='hello word!'; // local scope – 2012-02-22 18:15:46

回答

2

var one保證了變量被設置爲本地作用域。

默認情況下,$one會將變量分配給全局範圍。

0

它們都是變量名。在JavaScript中,$字符是變量名的有效字符。 var關鍵字只是在您的示例中將變量名稱設置爲範圍。

由於它在不同的JavaScript庫(如jQuery)中使用,$變得非常流行,但它是一個完全有效的變量名稱字符。

0

沒有區別,變量名可能包含$登錄。您剛剛宣佈了兩個不同的變量 - $oneone

upd:根據@yi_H評論 - 兩個變量實際上有不同的範圍。 var關鍵字用於在當前作用域中聲明變量,但如果省略了var,則它在全局名稱空間中定義

+0

你錯過了'var'部分 – 2012-02-22 18:06:06

0

$ one在全局作用域中定義,並且將在每個函數中都可見。 var one在其封閉範圍內定義,並且在外部不可見。

0

有些人用 「$」 作爲前綴,表示jQuery對象,如:

$text = $("#myTextElement"); 
3

沒有什麼特別之處$;只是另一個變量名稱。 「var」的使用告訴解釋器該變量具有局部範圍。無var =>全局。即;從頁面的任何地方訪問。

0

$one中的$並不意味着什麼特別。這只是另一個正常的JavaScript變量。在一些開發人員中有一個約定,其中前綴變量$用於指示該變量包含jQuery對象。這純粹是爲了風格和可讀性,並沒有技術或語法上的影響。

當您從聲明中省略var,瀏覽器將變量附加到全局對象:

foo = 'bar'; 
alert(window.foo); // 'bar' 

這對於具有比JavaScript的一個微不足道的金額任何網站一些非常顯著影響(在過去幾年中這個類別一直在快速增長)。最佳做法是總是聲明您的變量var以防止後來的一些問題。

有關變量範圍的更多詳細信息,請參閱:What is the scope of variables in JavaScript?

相關問題