我理解在流行的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中双美元符号的使用有所了解吗?
非常感谢!
答案 0 :(得分:81)
我写了这个函数。 :)
$$前缀不再有任何特殊意义。当包装工受欢迎时,我用了一个符号。 Packer会使用此前缀缩短变量名称。现在,Packer会自动缩短变量名称,因此这种表示法是多余的。
简短回答,$ sign是JavaScript中的有效标识符,所以你只是看着一堆丑陋的变量名。 ;)
答案 1 :(得分:22)
实际上,这只是开发人员的命名惯例。出于所有意图和目的,“$$
”可能也是“aa
”。
正如您所提到的,单个美元符号函数$()
在各种JavaScript库中几乎成为标准。 “统治他们所有人的一个功能”,是吗?但请记住,这本身并不是JS本身所固有的。它只是一个替换document.getElementById()
的函数名称。
所以,据说,$$
可能是任何东西。哎呀,你甚至可以有这样的功能:
function $$$$$$$$(){
//i've got dollar signs in my eyes!
}
换句话说,它只是一个变量/函数名称 - 就像所有其他名称一样。
答案 2 :(得分:6)
正如其他人所说,$$
是一个任意标识符。
JavaScript工具包MochiKit保留了一个由select elements using CSS selector syntax标识的函数,就像jQuery一样,除非没有将所有匹配元素包装在特殊对象中。
所以,是的 - 它本身并没有什么特别之处。
答案 3 :(得分:3)
据我所知,美元符号只是一个可以在变量名中使用的常规字符。这可能是一种惯例,表示不应该与之混淆的财产。
我的猜测是作者使用$$guid
来避免与现有的属性名称发生冲突。他可能会使用__guid
或类似的东西。
答案 4 :(得分:0)
以下条款引用双美元符号 -
//getElementById
function $$(id){
return document.getElementById(id);
}