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
。