2009-09-23 127 views
37

我理解在流行的JavaScript庫(如jQuery和Prototype)中使用(單)美元符號。我也理解PHP中雙美元符號的意義(變量變量)。 Dean Edwards在他着名的addEvent() JavaScript函數中使用雙美元符號。下面是一個除包含使用雙美元符號:JavaScript雙美元符號

function addEvent(element, type, handler) { 
    // assign each event handler a unique ID 
    if (!handler.$$guid) handler.$$guid = addEvent.guid++; 
    // create a hash table of event types for the element 
    if (!element.events) element.events = {}; 
    // create a hash table of event handlers for each element/event pair 
    var handlers = element.events[type]; 
    if (!handlers) { 
    handlers = element.events[type] = {}; 
    // store the existing event handler (if there is one) 
    if (element["on" + type]) { 
     handlers[0] = element["on" + type]; 
    } 
    } 
    // store the event handler in the hash table 
    handlers[handler.$$guid] = handler; 
    // assign a global event handler to do all the work 
    element["on" + type] = handleEvent; 
}; 
// a counter used to create unique IDs 
addEvent.guid = 1; 

從我讀過,美元符號才正式擁有的JavaScript代碼生成工具的意義,雖然該標準在今天很大程度上被忽略了由於美元在前面提到的JavaScript庫中有廣泛的用途。

任何人都可以在JavaScript中使用雙美元符號嗎?

非常感謝!

+1

在我看來,這'addEvent'將泄漏就像在IE篩子。 – kangax 2009-09-23 04:32:09

回答

74

我寫了這個函數。 :)

$$前綴不再有任何特殊意義。這是我在打包機很受歡迎時使用的標誌。 Packer會用這個前綴縮短變量名稱。現在Packer會自動縮短變量名稱,所以這個表示法是多餘的。

簡而言之,$符號是JavaScript中的一個有效標識符,因此您只需查看一堆醜陋的變量名稱即可。;)

+8

感謝您的權威答案......很高興聽到馬的嘴巴,可以這麼說! – NewToThis 2009-12-22 16:51:51

3

據我所知,美元符號只是一個可以在變量名中使用的常規字符。這可能是一個公約,表示不應該混淆的財產。

我的猜測是作者使用$$guid來避免與現有屬性名稱衝突。他可能已經使用__guid或類似的東西。

20

實際上,這只是開發人員的命名約定。出於所有意圖和目的,「$$」可能就是「aa」。

正如您所提到的,單個美元符號函數$()已經成爲各種JavaScript庫中的幾乎標準。 「一個統治他們的功能」,呃?但請記住,這並不是JS本身固有的。這只是一個函數名稱,它取代了document.getElementById()

所以,這樣說,$$可能是任何東西。哎呀,你甚至可以有這樣的功能:

function $$$$$$$$(){ 
    //i've got dollar signs in my eyes! 
} 

換句話說,它只是一個變量/函數名,就像所有的休息。

+0

非常感謝您確認沒有比這更多的東西! – NewToThis 2009-09-23 15:29:44

6

正如其他人所說,$$是一個任意標識符。

JavaScript工具包MochiKit保留一個與select elements using CSS selector syntax相同的功能,就像jQuery一樣,除非不包含特殊對象中的所有匹配元素。

所以,是的 - 沒有什麼特別的東西,本身。

+6

我很想知道爲什麼*&@#$ !!人們在這方面投下我的票;如果你打算放棄投票,至少應該提一下,以便提到爲什麼。 – 2009-11-14 07:24:25

1

雙美元符號在以下條款中提到的 -

//getElementById  
    function $$(id){ 
    return document.getElementById(id); 
    } 
+0

好的。這就是我一直在尋找的......這是在哪裏定義的?有沒有參考的地方,Mozilla開發者網絡的口徑? – zipzit 2016-05-28 17:43:57