2009-07-19 52 views
116

在以下JavaScript代碼中有一個美元符號$。這是什麼意思?

$(window).bind('load', function() { 
    $('img.protect').protectImage(); 
}); 
+0

參見:HTTP:// stackoverflow.com/a/553734/43615(爲什麼JavaScript變量會以美元符號開頭?) – 2016-02-01 16:35:53

回答

238

您的代碼片段看起來像是從流行的JavaScript庫(jQuery,ProtoType,mooTools等)中引用方法。

在JavaScript中使用$沒有什麼神祕的。 $只是一個有效的JavaScript標識符。

JavaScript允許使用大寫和小寫字母,數字和$_$旨在用於機器生成的變量(如$0001)。

原型,jQuery和大多數JavaScript庫使用$作爲主要基礎對象(或函數)。他們中的大多數人也有辦法放棄$,以便它可以與使用它的其他庫一起使用。在這種情況下,您使用jQuery而不是$。實際上,$只是jQuery的快捷方式。

+12

這比接受的答案好得多。 +1 – 2009-07-19 17:49:49

34

這很可能是jQuery代碼(更準確地說,使用jQuery庫的JavaScript)。

$代表jQuery Function,實際上是jQuery的簡寫別名。 (與大多數語言不同,$符號未被保留,並且可以用作變量名稱)。它通常用作選擇器(即返回在DOM中找到的一組元素的函數)。

+6

它的原型 – 2009-07-19 17:30:55

+3

您應該添加$就像x,它可以是您分配的任何東西 – hasen 2009-07-19 17:36:49

+0

這段代碼是什麼意思:$ input.prop('type')=='radio'; – OKGimmeMoney 2014-08-15 18:21:09

29

another answer

一個小歷史

記住,沒有什麼本質上的特別之處 '$'。這是一個變量名稱,就像任何其他名稱一樣。在早些時候,人們習慣使用document.getElementById編寫代碼。由於JavaScript區分大小寫,因此在編寫document.getElementById時出錯是正常的。我應該資本''的'B'嗎?我是否應該註冊Id的「我」?你得到了漂移。由於功能是在JavaScript中的一等公民,你總是可以做到這一點

var $ = document.getElementById; //freedom from document.getElementById! 

[編輯:看起來在Firefox 3和谷歌Chrome,you can't make alias so easily。在IE6和Firefox2,上述技術仍然有效。]

當Prototype庫到達時,他們命名了他們的功能,它得到的DOM元素,如「$」,以節省打字/可讀性[當寫JS代碼,大部分你首先選擇一些DOM元素]。幾乎所有的JavaScript庫都複製了這個想法。 Prototype還引入了$$函數來選擇使用CSS選擇器的元素。

jQuery不僅調整了'$ function',而且擴展了它以接受所有'選擇器'來獲得你想要的元素。現在,如果你已經在你的項目中使用了Prototype並且想要包含jQuery,那麼你會遇到問題,因爲'$'可能指向Prototype的實現或者jQuery的實現。這就是爲什麼jQuery有noConflict選項的原因,以便您可以在使用Prototype的項目中包含jQuery,並慢慢遷移您的代碼。我認爲這對約翰來說是一個很棒的舉動! :)

1

從jQuery的文檔描述jQuery Core Object

許多開發商在它前面加上$來的包含爲了幫助區分jQuery的 對象的變量名。這種做法沒有什麼神奇之處 - 它只是幫助一些人跟蹤變量所包含的不同之處。

5

正如所有其他答案所說;它幾乎可以是任何東西,但通常是「JQuery」。

但是,在ES6中,它是一個字符串插值運算符,例如template "literal"

var s = "new" ; // you can put whatever you think appropriate here. 
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes 
console.log(s2) ; 

結果:

有很多新的想法,這些天!

1

除了上面的回答,$在javascript中沒有特別的含義,它可以自由地用於對象命名。在jQuery中,它被簡單地用作jQuery對象和jQuery()函數的別名。 但是,您可能會遇到需要將其與另一個使用$的JS庫結合使用的情況,這會導致命名衝突。因爲這個原因,JQuery中有一個方法,jQuery.noConflict()

這裏是的jQuery文檔的一個樣本:

<script src="other_lib.js"></script> 
<script src="jquery.js"></script> 
<script> 
$.noConflict(); 
// Code that uses other library's $ can follow here. 
</script> 

另外,您也可以使用這樣

(function ($) { 
// Code in which we know exactly what the meaning of $ is 
} (jQuery)); 

Refhttps://api.jquery.com/jquery.noconflict/

相關問題