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

IT技术 javascript jquery
2021-01-26 08:38:09

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

今天,我在一个没有 javascript 库的完全空的 html 文件中启动了 Firefox,但美元符号指向了某些东西。如果我打开 Firefox 控制台并输入“$”,我会得到"function()".

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

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

6个回答

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

这是正确的,而且仍然正确。

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

FirefoxChrome实现$$$以及其他几个作为辅助命令。两者都将设置$$document.querySelectorAll(),并设置$document.querySelectorifwindow.$尚未定义。

因此,您所看到的实际上并不是标准的 JavaScript,而是浏览器开发者控制台中的一个助手。它也不是 jQuery(只要您不在使用 jQuery 的页面上)。但是,它的行为是接近的一个jQuery,关于该querySelector(单场比赛)和querySelectorAll(为多个匹配)给你几乎相同的强度jQuery选择。

不确定它何时被其他浏览器采用,但我看到它在 IE11 和 Edge 上也可用。
2021-03-21 08:38:09
好吧,这真的很烦人。它只是让它变得混乱,因为它看起来像 jquery,但你在任何地方都找不到它。我想一旦您意识到正在发生的事情,它可能会很方便,但它实际上只是令人困惑并且可能会掩盖错误。
2021-03-25 08:38:09
@Martian2049 我认为真正的 jQuery 会回应 $.fn.jquery
2021-04-09 08:38:09
目前,Chrome 至少似乎将$()视为document.querySelectorAll(),与$$(). 这更接近于 jQuery$()函数的工作方式。
2021-04-10 08:38:09
@Gaspacchio 那应该是另一个答案。但是,请记住,在这个问题$的模板文字没有使用
2021-04-12 08:38:09

它对解释器没有任何意义,就像下划线一样

来自 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

那个博客链接现在已经死了。
2021-03-22 08:38:09
答案的第一部分无关紧要,第二部分在现代浏览器的上下文中已过时且错误。
2021-03-31 08:38:09

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.

ECMAScript

Identifier ::
IdentifierName but not ReservedWord

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart

IdentifierStart ::
UnicodeLetter
$
_ 
\ UnicodeEscapeSequence

查看它是什么以及它在哪里定义的最简单的解决方案可能是键入$()在此行上放置一个断点