2012-08-15 88 views
0

我知道這可能是顯而易見的......但是,當我用'$'爲變量名加前綴時,jQuery究竟做了什麼。我知道這是將變量放在全局命名空間中,但爲什麼?

回答

7

這是完全錯誤的。

$是一個普通的對象(實際上是一個函數),它恰好有一個簡短的名字。

$本身是一個全球性的(一個所述window對象的屬性)

+0

謝謝。之所以我在考慮將$前綴變量放在全局名稱空間中,是因爲當我在Javascript控制檯中設置斷點時,我在Scope變量選項卡中看到了Global下的所有$ -prefixed變量。 – 2012-08-15 19:14:00

+1

@ChristianBenincasa這可能是由於你如何聲明變量而不是它們的名字。 – 2012-08-15 19:18:09

1

與一個$(例如var $myvar;)開始只是另一種可變的,不以任何方式不同的變量。

編輯:

如果 「前綴」 你的意思是這樣的:

$(myvar) 

未 「前綴」。我認爲這叫做「包裝」。它「增強」了變量。你甚至可以「包裝」window本身...... http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm

它做什麼是相同的jQuery(myvar)jQuery是一個函數(如果您願意,可調用的對象)。

+2

'$(myvar)'被稱爲「調用一個函數」(人們有時會把它叫做「包裝」爲jQuery對象)。 '$'是一個函數。 :-P – 2012-08-15 19:15:45

+0

@火箭+1真,真,編輯我的回答:) – frnhr 2012-08-15 19:19:28

2

在JavaScript中$是一個有效的變量名。將$添加到變量中沒有什麼特別的。

var $a; 
var a$b; 
var $; 

這些只是變量,沒有特別的意義。

jQuery的只是讓window.$window.jQuery參考的語法糖:-)

0

你聲明一個變量,其名稱的前綴是$

如果你這樣寫:

$test = 500; 

然後是的,你正在污染與命名$test變量,它並不比任何其他變量的不同(在$沒有特殊效果)的全局命名空間。但在JQuery中,你最有可能這樣做:

$('test') 

這只是一個簡單的函數調用。函數名稱是$,參數是'test'

0

你的意思是,當你正在做的:

var $li = $("li"); 

您與$前綴li。如果你想使用一個前綴爲$的前綴,那麼你不需要調用變量。如果知道$ variableName是一個jQuery對象,當你調試代碼時它可以幫助你。

0

jQuery無法改變javascript語言的工作方式。

有兩種方法來創建一個全局變量

globalVariable = ... 

window.globalVariable = ... 

先不要用JavaScript嚴格模式

工作時的jquery.js執行的時候就將此全球功能到窗口對象 $和jQuery

它不能改變你的變量是本地的還是全局的,這取決於你。