簡體   English   中英

JavaScript雙美元符號

[英]JavaScript Double Dollar Sign

我理解在流行的JavaScript庫(如jQuery和Prototype)中使用(單個)美元符號。 我也理解PHP(變量變量)中雙美元符號的重要性。 Dean Edwards在他着名的addEvent() 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中雙美元符號的使用有所了解嗎?

非常感謝!

我寫了這個函數。 :)

$$前綴不再具有任何特殊意義。 當包裝工受歡迎時,我用了一個符號。 Packer會使用此前綴縮短變量名稱。 如今,Packer會自動縮短變量名稱,因此這種表示法是多余的。

簡短的回答,$ sign是JavaScript中的有效標識符,所以你只是看着一堆丑陋的變量名。 ;)

實際上,它只是開發人員的命名約定。 出於所有意圖和目的,“ $$ ”可能也是“ aa ”。

正如您所提到的,單個美元符號函數$()已成為各種JavaScript庫中的幾乎標准。 “統治他們所有人的一個功能”,是嗎? 但請記住,這本身並不是JS本身所固有的。 它只是一個替換document.getElementById()的函數名。

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

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

換句話說,它只是一個變量/函數名稱 - 就像其他所有名稱一樣。

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

JavaScript工具包MochiKit保留了一個由相同標識的函數來使用CSS選擇器語法選擇元素 ,就像jQuery一樣,除了不將所有匹配元素包裝在特殊對象中。

所以,是的 - 它本身並沒有什么特別之處。

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

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

雙美元符號在以下術語中引用 -

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM