几年前我做了一些 javascript / jQuery 编程,然后我又重新开始了。当时美元符号用于所有 jQuery 功能,如果未导入 jQuery 库,则未定义美元符号。
今天,我在一个没有 javascript 库的完全空的 html 文件中启动了 Firefox,但美元符号指向了某些东西。如果我打开 Firefox 控制台并输入“$”,我会得到"function()".
1)几年前没有分配美元符号是正确的,还是我记错了?
2)如果不是 jQuery ,美元符号是什么?
几年前我做了一些 javascript / jQuery 编程,然后我又重新开始了。当时美元符号用于所有 jQuery 功能,如果未导入 jQuery 库,则未定义美元符号。
今天,我在一个没有 javascript 库的完全空的 html 文件中启动了 Firefox,但美元符号指向了某些东西。如果我打开 Firefox 控制台并输入“$”,我会得到"function()".
1)几年前没有分配美元符号是正确的,还是我记错了?
2)如果不是 jQuery ,美元符号是什么?
1)几年前没有分配美元符号是正确的,还是我记错了?
这是正确的,而且仍然正确。
2) 如果不是 jQuery,美元符号是什么?
Firefox和Chrome实现$,$$以及其他几个作为辅助命令。两者都将设置$$为document.querySelectorAll(),并设置$为document.querySelectorifwindow.$尚未定义。
因此,您所看到的实际上并不是标准的 JavaScript,而是浏览器开发者控制台中的一个助手。它也不是 jQuery(只要您不在使用 jQuery 的页面上)。但是,它的行为是接近的一个jQuery,关于该querySelector(单场比赛)和querySelectorAll(为多个匹配)给你几乎相同的强度jQuery选择。
它对解释器没有任何意义,就像下划线一样
来自 ECMAScript 规范:
美元符号 ($) 和下划线 (_) 可用于标识符中的任何位置。美元符号仅用于机械生成的代码。
您还可以查看JavaScript 美元符号 ($) - 它是做什么用的?
按照惯例,美元符号($),下划线(_),甚至一些ASCII字符被允许可以在JavaScript标识符(来源任何地方使用:ECMA脚本文件(7.6标识符,ECMA-262,第3版)。美元sign 仅用于机械生成的代码。这意味着我们不想在标识符名称中使用美元符号 ($),除非我们正在编写框架。以下是可以使用的允许字符列表标识符名称中的任何位置:
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence
编辑:-
实际上,美元符号功能或多或少已成为document.getElementById().
为了证实我的观点检查此:
$(选择器)
返回与给定 CSS 选择器匹配的单个元素。在旧的 Firebug 版本中,这曾经等同于 document.getElementById。
Dollar sign($) 未分配,但某些浏览器添加了特殊用途的功能。
像谷歌浏览器一样,如果你$在控制台上输入,它会返回:
function $(selector, [startNode]) { [Command Line API] }
这个功能分配给谷歌浏览器开发者工具,让调试更容易。
如果你输入$('div'),它会返回如下内容:
e.fn.e.init[178]
并div在其中包含每个DOM 对象。
顺便说一句,在您单击鼠标右键选择元素后,您可以$scope在控制台上按类型访问 angular.js 范围
请注意,这$$不完全是document.querySelectorAll,因为与该函数不同,它不返回 a NodeList:
document.querySelectorAll("p") instanceof NodeList // true
$$("p") instanceof NodeList // false
Array.isArray($$("p")) // true
所以$$(selector)真的更像Array.from(document.querySelectorAll(selector))。这意味着像map和朋友这样的数组方法,而不仅仅是forEach,在使用时可用,$$这实际上非常有用。
它可以是任何东西,就像$一个有效的变量名,就像dollar.
Identifier ::
IdentifierName but not ReservedWord
IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
\ UnicodeEscapeSequence
查看它是什么以及它在哪里定义的最简单的解决方案可能是键入$()并在此行上放置一个断点。