JavaScript中的美元符号是什么,如果不是jQuery

几年前,我做了一些javascript / jQuery编程,然后我又重新开始了。 当时美元符号用于所有jQueryfunction,如果没有导入jQuery库,美元符号没有被定义。

今天,我用一个完全空白的html文件启动了Firefox,没有JavaScript库,但是美元符号指向了某种东西。 如果我打开Firefox控制台并input'$',我会得到"function()"

1)几年前,美元符号没有被分配是正确的,还是我记错了?

2)什么是美元符号 ,如果不是jQuery?

1)几年前,美元符号没有被分配是正确的,还是我记错了?

这是正确的,依然如此。

2)什么是美元符号,如果不是jQuery?

Firefox和Chrome实施$$$和其他几个辅助命令。 两者都将$$设置为document.querySelectorAll() ,如果window.$未定义,则将$设置$ document.querySelector

所以你所看到的不是标准的JavaScript,而是浏览器开发者控制台中的助手。 这也不是jQuery(只要你不在使用jQuery的页面上)。 然而,它的行为是接近于jQuery ,关于querySelector (对于单个匹配)和querySelectorAll (对于多个匹配)给你几乎与jQueryselect器相同的强度。

就像下划线一样,对于翻译来说没有任何意义

从ECMAScript规范:

美元符号($)和下划线(_)在标识符的任何地方都是允许的。 美元符号仅用于机械生成的代码。

你也可以检查JavaScript美元符号($) – 这是什么?

按照惯例,美元符号($),下划线(_)甚至一些ASCII字符被允许在JavaScript标识符的任何地方使用(来源:Ecma Script文档(7.6标识符,ECMA-262,第3版) 符号仅用于机械生成的代码,这意味着除非我们正在编写框架,否则我们不希望在我们的标识符名称中使用美元符号($)。下面是允许使用的字符列表标识符名称中的任意位置:

 IdentifierName :: IdentifierStart IdentifierName IdentifierPart IdentifierStart :: UnicodeLetter $ _ UnicodeEscapeSequence IdentifierPart :: IdentifierStart UnicodeCombiningMark UnicodeDigit UnicodeConnectorPunctuation UnicodeEscapeSequence 

编辑:-

实际上美元符号函数已经成为document.getElementById()事实上的快捷方式。

要确认我的观点,请检查一下

$(select)

返回与给定的CSSselect器匹配的单个元素。 在旧的Firebug版本中 ,这相当于document.getElementById

Dollar sign($)未分配,但某些浏览器添加了特殊用途的function。

像Google Chrome一样,如果您在控制台上键入$ ,则会返回:

 function $(selector, [startNode]) { [Command Line API] } 

此function分配给谷歌浏览器开发工具,让debugging更容易。

如果你input$('div') ,它将返回如下所示的内容:

 e.fn.e.init[178] 

并在其中包含每个div DOM对象。

顺便说一句,在你点击鼠标右键select元素后,你可以通过在控制台上键入$scope来支持angular.js作用域

请注意, $$不是document.querySelectorAll ,因为与该函数不同,它不会返回一个NodeList

 document.body.querySelectorAll('p') instanceof NodeList true $$('p') instanceof NodeList false Array.isArray($$('p')) true 

所以$$(selector)更像是Array.from(document.querySelectorAll(selector)) 。 这意味着像.forEach和朋友这样的数组方法在$$上可用,这实际上非常有用。

它可能是任何东西,因为$是一个有效的variables名称,就像dollar一样。

来自ECMAScript :

 Identifier :: IdentifierName but not ReservedWord IdentifierName :: IdentifierStart IdentifierName IdentifierPart IdentifierStart :: UnicodeLetter $ _ \ UnicodeEscapeSequence 

最简单的解决scheme,看它是什么,它在哪里定义可能会键入$()并在这一行上放置一个断点 。

为了完成这里的其他答案,MooTools也使用$作为document.getElementById的别名。

它检查$是否被采用,然后默认为document.id