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

Mad*_*ern 75 javascript jquery

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

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

1)几年前没有分配美元符号,或者我记得错了,这是正确的吗?

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

Zet*_*eta 107

1)几年前没有分配美元符号,或者我记得错了,这是正确的吗?

这是正确的,仍然是真的.

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

FirefoxChrome实现$,$$其他几个作为帮助程序命令.两者都将设置$$document.querySelectorAll(),并设置$document.querySelectorif window.$尚未定义.

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

  • 好的,真的很烦人.它只是让它变得混乱,因为它看起来像jquery,但你无法在任何地方找到它.我想一旦你意识到它正在发生它可能很方便,但它真的只是令人困惑,可以掩盖错误. (25认同)
  • @ Martian2049我认为真正的jQuery会响应`$ .fn.jquery` (2认同)
  • @Gaspacchio那应该是另一个答案。但是,请记住,在此问题中,模板文字中未使用`$`。 (2认同)

Rah*_*thi 12

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

从ECMAScript规范:

标识符中的任何位置都允许使用美元符号($)和下划线(_).美元符号仅用于机械生成的代码.

您还可以查看JavaScript Dollar Sign($) - 它的用途是什么?

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

IdentifierName ::
IdentifierStart
IdentifierName IdentifierPart
IdentifierStart ::
UnicodeLetter
$
_
UnicodeEscapeSequence
IdentifierPart ::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeEscapeSequence
Run Code Online (Sandbox Code Playgroud)

编辑:-

实际上,美元符号功能已成为事实上的或多或少的快捷方式document.getElementById().

为了证实我的观点检查:

$(选择)

返回与给定CSS选择器匹配的单个元素.在旧的Firebug版本中,这曾经等同于 document.getElementById.


Che*_*Lin 7

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

与谷歌浏览器一样,如果您$在控制台上输入,它将返回:

function $(selector, [startNode]) { [Command Line API] }
Run Code Online (Sandbox Code Playgroud)

此功能已分配给Google Chrome Developer Tool,让调试更加轻松.

如果你键入$('div'),它将返回如下内容:

e.fn.e.init[178]
Run Code Online (Sandbox Code Playgroud)

div在其中包含每个DOM对象.

顺便说一句,单击鼠标右键选择元素后,可以$scope在控制台上按类型加入angular.js范围


小智 5

请注意,这$$并不完全document.querySelectorAll,因为与该函数不同,它不会返回NodeList:

document.body.querySelectorAll('p') instanceof NodeList 
true

$$('p') instanceof NodeList
false

Array.isArray($$('p'))
true
Run Code Online (Sandbox Code Playgroud)

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