我知道這可能是顯而易見的......但是,當我用'$'爲變量名加前綴時,jQuery究竟做了什麼。我知道這是將變量放在全局命名空間中,但爲什麼?
回答
這是完全錯誤的。
$
是一個普通的對象(實際上是一個函數),它恰好有一個簡短的名字。
$
本身是一個全球性的(一個所述window
對象的屬性)
與一個$
(例如var $myvar;
)開始只是另一種可變的,不以任何方式不同的變量。
編輯:
如果 「前綴」 你的意思是這樣的:
$(myvar)
未 「前綴」。我認爲這叫做「包裝」。它「增強」了變量。你甚至可以「包裝」window
本身...... http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm
它做什麼是相同的jQuery(myvar)
。 jQuery
是一個函數(如果您願意,可調用的對象)。
'$(myvar)'被稱爲「調用一個函數」(人們有時會把它叫做「包裝」爲jQuery對象)。 '$'是一個函數。 :-P – 2012-08-15 19:15:45
@火箭+1真,真,編輯我的回答:) – frnhr 2012-08-15 19:19:28
在JavaScript中$
是一個有效的變量名。將$
添加到變量中沒有什麼特別的。
var $a;
var a$b;
var $;
這些只是變量,沒有特別的意義。
jQuery的只是讓window.$
到window.jQuery
參考的語法糖:-)
你聲明一個變量,其名稱的前綴是$
?
如果你這樣寫:
$test = 500;
然後是的,你正在污染與命名$test
變量,它並不比任何其他變量的不同(在$
沒有特殊效果)的全局命名空間。但在JQuery中,你最有可能這樣做:
$('test')
這只是一個簡單的函數調用。函數名稱是$
,參數是'test'
你的意思是,當你正在做的:
var $li = $("li");
您與$
前綴li
。如果你想使用一個前綴爲$
的前綴,那麼你不需要調用變量。如果知道$ variableName是一個jQuery對象,當你調試代碼時它可以幫助你。
jQuery無法改變javascript語言的工作方式。
有兩種方法來創建一個全局變量
globalVariable = ...
或
window.globalVariable = ...
先不要用JavaScript嚴格模式
工作時的jquery.js執行的時候就將此全球功能到窗口對象 $和jQuery
它不能改變你的變量是本地的還是全局的,這取決於你。
- 1. jQuery命名空間全局變量
- 2. 全局命名空間變量?
- 3. 命名空間全局變量問題
- 4. 命名空間和全局變量
- 5. 只有類需要全局命名空間前綴嗎?
- 6. 著名的命名空間前綴
- 7. 全局變量的名稱空間
- 8. EMF命名空間URI /前綴爲空
- 9. Python名稱空間和全局變量
- 10. 使用dom4j添加命名空間和命名空間前綴
- 11. LINQ與命名空間前綴xml的
- 12. 獲取命名空間的前綴
- 13. 添加命名空間前綴的Axis2
- 14. 命名空間中的C++全局變量
- 15. C++:使用命名空間,全局變量是行不通的
- 16. 變量在全局命名空間中的使用
- 17. 全局命名空間中的命名空間C#
- 18. (Axis + Jetty)前綴自動生成的前綴命名空間
- 19. 命名空間前綴'bal'未定義
- 20. Android ksoap2命名空間前綴
- 21. gSOAP命名空間前綴問題
- 22. Dataset.WriteXml()命名空間和前綴
- 23. JAXB Marshallingremove命名空間前綴
- 24. 使用命名空間前綴在C#
- 25. HappyMapper命名空間前綴錯誤
- 26. PHP類命名空間與前綴
- 27. XML命名空間前綴:二片段
- 28. BizTalk命名空間默認前綴
- 29. 刪除命名空間前綴
- 30. XmlDocument.SelectSingleNode省略前綴和命名空間
謝謝。之所以我在考慮將$前綴變量放在全局名稱空間中,是因爲當我在Javascript控制檯中設置斷點時,我在Scope變量選項卡中看到了Global下的所有$ -prefixed變量。 – 2012-08-15 19:14:00
@ChristianBenincasa這可能是由於你如何聲明變量而不是它們的名字。 – 2012-08-15 19:18:09