JavaScript 双美元符号

IT技术 javascript
2021-03-10 18:19:52

我了解(单个)美元符号在流行的 JavaScript 库(如 jQuery 和 Prototype)中的使用。我也明白PHP中双美元符号(变量)的意义。Dean Edwards 在他著名的addEvent() JavaScript 函数中使用了双美元符号这是一个包含使用双美元符号的 except :

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 中双美元符号的这种用法?

非常感谢!

5个回答

我写了这个函数。:)

$$ 前缀不再有任何特殊意义。这是我在 Packer 流行时使用的符号。Packer 将使用此前缀缩短变量名称。现在 Packer 会自动缩短变量名,所以这个符号是多余的。

简短的回答,$ 符号在 JavaScript 中是一个有效的标识符,所以你只是在看一堆丑陋的变量名。;)

感谢权威的回答......很高兴从马口中听到它,可以这么说!
2021-04-19 18:19:52

好吧,这只是开发人员的命名约定。$$” 也可以是“ aa”,出于所有意图和目的。

正如您所提到的,单个美元符号功能$()几乎已成为各种 JavaScript 库中的标准。“一个功能来统治他们”,嗯?但请记住,它并不是 JS 本身固有的。它只是一个流行的函数名称来替换document.getElementById().

所以,话虽如此,$$可以是任何东西。oop,你甚至可以有这样的功能:

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

换句话说,它只是一个变量/函数名称——就像其他的一样。

太好了..感谢您确认没有比这更多的东西了!
2021-05-14 18:19:52

正如其他人所说,$$是一个任意标识符。

JavaScript 工具包MochiKit保留了一个由相同标识的函数来使用 CSS 选择器语法选择元素,就像 jQuery 一样,除了没有将所有匹配的元素包装在一个特殊的对象中。

所以,是的 - 它本身并没有什么特别的。

据我所知,美元符号只是一个可以在变量名中使用的常规字符。这可能是一种约定,表示不应乱七八糟的属性。

我的猜测是作者过去常常$$guid避免与现有属性名称发生冲突。他可能会使用__guid或类似的东西来代替。

双美元符号在以下术语中被引用 -

//getElementById    
  function $$(id){
    return document.getElementById(id);
  }
接得好。这就是我一直在寻找的……这是在哪里定义的?某处是否有参考,类似于 Mozilla Developer Network 的水准?
2021-04-23 18:19:52