Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果不是jQuery,Javascript中的美元符号是什么_Javascript_Jquery - Fatal编程技术网

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

如果不是jQuery,Javascript中的美元符号是什么,javascript,jquery,Javascript,Jquery,几年前我做了一些javascript/jQuery编程,现在我又重新开始了。当时,所有jQuery功能都使用美元符号,如果没有导入jQuery库,则没有定义美元符号 今天,我启动了Firefox,在一个完全空的html文件中,没有javascript库,但美元符号指向一些东西。如果我打开Firefox控制台并键入“$”我会得到“function()” 1) 几年前没有指定美元符号是正确的,还是我记错了 2) 如果不是jQuery,美元符号是什么?它对解释器的意义与下划线一样 从ECMAScrip

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

今天,我启动了Firefox,在一个完全空的html文件中,没有javascript库,但美元符号指向一些东西。如果我打开Firefox控制台并键入“$”我会得到
“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]