如果不是jQuery,Javascript中的美元符号是什么
几年前我做了一些javascript/jQuery编程,现在我又重新开始了。当时,所有jQuery功能都使用美元符号,如果没有导入jQuery库,则没有定义美元符号 今天,我启动了Firefox,在一个完全空的html文件中,没有javascript库,但美元符号指向一些东西。如果我打开Firefox控制台并键入“$”我会得到如果不是jQuery,Javascript中的美元符号是什么,javascript,jquery,Javascript,Jquery,几年前我做了一些javascript/jQuery编程,现在我又重新开始了。当时,所有jQuery功能都使用美元符号,如果没有导入jQuery库,则没有定义美元符号 今天,我启动了Firefox,在一个完全空的html文件中,没有javascript库,但美元符号指向一些东西。如果我打开Firefox控制台并键入“$”我会得到“function()” 1) 几年前没有指定美元符号是正确的,还是我记错了 2) 如果不是jQuery,美元符号是什么?它对解释器的意义与下划线一样 从ECMAScrip
“function()”
1) 几年前没有指定美元符号是正确的,还是我记错了
2) 如果不是jQuery,美元符号是什么?它对解释器的意义与下划线一样 从ECMAScript规范中: 中的任何位置都允许使用美元符号($)和下划线(\) 标识符。美元符号仅适用于以下情况: 机械生成的代码 你也可以检查一下 按照惯例,美元符号($)、下划线(_)甚至一些 ASCII字符允许在JavaScript中的任何位置使用 标识符(来源:Ecma脚本文档(7.6标识符, ECMA-262,第3版)美元符号仅用于 机械生成的代码。这意味着我们不想使用 美元符号($)在我们的标识符名称中,除非我们正在写一个 框架。以下是允许使用的字符列表,可以 在标识符名称中的任何位置使用: 编辑:- 实际上,美元符号函数或多或少已经成为
document.getElementById()
的事实上的快捷方式
要确认我的点检,请执行以下操作:
$(选择器)
返回与给定CSS选择器匹配的单个元素。以旧格式
Firebug版本,这以前相当于
document.getElementById
它可以是任何东西,因为
$
是一个有效的变量名,就像dollar
一样
发件人:
要查看它是什么以及它的定义位置,最简单的解决方案可能是在这一行键入$()
,然后键入to
1) 几年前没有指定美元符号是正确的,还是我记错了
这是正确的,也是正确的
2) 如果不是jQuery,美元符号是什么
并将$
、$$
和其他几个命令作为助手命令实现。两者都将$
设置为document.queryselectoral()
,如果窗口未定义$
,则将$
设置为document.querySelector
因此,您看到的实际上不是标准JavaScript,而是浏览器开发人员控制台中的助手。它也不是jQuery(只要您不在使用jQuery的页面上)。但是,它的行为与jQuery的行为非常接近,这是因为querySelector
(对于单个匹配)和querySelector(对于多个匹配)给了您与jQuery选择器几乎相同的强度。没有分配美元符号($)
,但有些浏览器添加了特殊用途的功能
与Google Chrome一样,如果在控制台上键入$
,它将返回:
function $(selector, [startNode]) { [Command Line API] }
此功能分配给谷歌Chrome开发工具,让调试更容易
如果键入$('div')
,它将返回如下内容:
e.fn.e.init[178]
并在其中包含每个div
DOM对象
顺便说一句,单击鼠标右键选择元素后,您可以在控制台上按类型访问angular.js scope$scope
,注意,$
不是完全的文档
document.queryselectoral(“p”)节点列表实例//true
$$(“p”)节点列表实例//false
Array.isArray($$(“p”)//true
所以$$(选择器)
实际上更像是Array.from(document.querySelectorAll(选择器))
。这意味着在使用$$
时,可以使用map
和friends等数组方法,而不仅仅是forEach
,这实际上非常有用。为了完成这里的其他答案,MooTools还使用$
作为文档.getElementById
的别名
它会检查$
是否被使用,然后默认为document.id
OK,这真的很烦人。它只是让人困惑,因为它看起来像jquery在那里,但你在任何地方都找不到它。我想,一旦你意识到这一点,它可能会很方便,但它确实令人困惑,可能会掩盖错误。不确定它是什么时候被其他浏览器采用的,但我在IE11和Edge上也看到了它。那么人们如何知道它是否是jquery呢?比如说,您已经导入了一个可能包含了一些其他lib的大型库,您想知道jquery是否存在。请帮忙。@Martian2049我想真正的jQuery会对$.fn.jQuery
@Gaspacchio作出响应,这应该是另一个答案。但是,请记住,在这个问题中,$
没有在模板文本中使用。这个博客链接现在已经死了。答案的第一部分是不相关的,第二部分是过时的,在现代浏览器的上下文中是错误的。
function $(selector, [startNode]) { [Command Line API] }
e.fn.e.init[178]