我几年前做了一些javascript/jquery编程,我又开始了。那时,美元符号用于所有jQuery功能,如果未进口jQuery库,则没有定义美元符号。
今天,我在没有JavaScript库的一个完全空的HTML文件中启动了Firefox,但美元符号指向某物。如果我打开Firefox控制台并键入'$'我得到"function()"
。
1)几年前没有分配美元标志,还是我记得错了吗?
是正确的吗?2)什么是美元符号,如果不是jQuery?
1)几年前没有分配美元标志,还是我记得错了吗?
是正确的吗?
那是正确的,仍然是正确的。
2)什么是美元符号,如果不是jQuery?
Firefox和Chrome实施$
,$$
以及其他几个作为帮助人命令。两者都将将$$
设置为document.querySelectorAll()
,如果尚未定义window.$
,则将$
设置为document.querySelector
。
因此,您所看到的实际上不是标准的JavaScript,而是浏览器开发人员控制台中的助手。这也不是jQuery(只要您不在页面上使用jQuery)。但是,它的行为靠近jQuery
之一,涉及querySelector
(用于单场比赛)和querySelectorAll
(用于多个匹配项)给您与JQuery Selector几乎相同的强度。
它对解释器没有任何意义,就像下划线
来自ecmascript规范:
美元符号($)和下划线(_)在任何地方允许 标识符。美元符号仅用于使用 机械生成的代码。
您也可以检查JavaScript美元符号($) - 是什么?
按大会,美元符号($),下划线(_),甚至一些 允许在JavaScript中的任何地方使用ASCII字符 标识符(来源:ECMA脚本文档(7.6标识符,, ECMA-262,3版)美元标志仅用于用于 机械生成的代码。这意味着我们不想使用 除非我们写一个 框架。以下是允许字符的列表 标识符名称中的任何地方使用:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence
编辑: -
实际上,美元符号功能已成为document.getElementById()
的事实上的捷径。
确认我的点检查 this :
$(Selector)
返回与给定CSS选择器匹配的单个元素。在旧 firebug版本,这曾经相当于 document.getElementById 。
Dollar sign($)
未分配,但是某些浏览器添加了特殊用法的函数。
喜欢Google Chrome,如果您在控制台上键入$
,它将返回:
function $(selector, [startNode]) { [Command Line API] }
为Google Chrome开发人员工具分配了此功能,让调试更容易。
如果您键入$('div')
,它将返回这样的内容:
e.fn.e.init[178]
并将每个 div
dom对象包含在其中。
顺便说一句,单击鼠标上的右键选择元素后,您可以按CONEOLE上的 $scope
acceess angular.js范围
请注意,$$
不是document.querySelectorAll
,因为与该功能不同,它不会返回NodeList
:
document.querySelectorAll("p") instanceof NodeList // true
$$("p") instanceof NodeList // false
Array.isArray($$("p")) // true
因此,$$(selector)
实际上更像Array.from(document.querySelectorAll(selector))
。这意味着使用map
等数组方法,而不仅仅是forEach
,当时使用$$
,实际上非常有用。
只是为了在此处完成其他答案,Mootools还将$
用作document.getElementById
的别名。
确实检查了$
是否已采用,然后将默认为document.id
。
可能是什么,因为 $
是有效的变量名称,就像 dollar
一样。
来自ecmascript:
Identifier ::
IdentifierName but not ReservedWord
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
最简单的解决方案是查看它是什么以及定义的位置可能会键入$()
并在此行上放置断点。