[英]What is the meaning of "$" sign in JavaScript
在以下 JavaScript 代码中有一个美元 ( $
) 符号。 这是什么意思?
$(window).bind('load', function() {
$('img.protect').protectImage();
});
您的代码片段看起来像是在引用流行的 JavaScript 库之一(jQuery、ProtoType、mooTools 等)中的方法。
在 JavaScript 中使用$
并没有什么神秘之处。 $
只是一个有效的 JavaScript 标识符。
JavaScript 允许大小写字母、数字以及$
和_
。 $
旨在用于机器生成的变量(例如$0001
)。
Prototype、jQuery 和大多数 javascript 库都使用$
作为主要的基础对象(或函数)。 他们中的大多数还有一种方法可以放弃$
以便它可以与另一个使用它的库一起使用。 在这种情况下,您使用jQuery
而不是$
。 实际上, $
只是jQuery
的一个快捷方式。
从另一个答案:
一点历史
请记住, $
本身并没有什么特别之处。 它是一个变量名,就像其他任何变量一样。 在早期,人们过去常常使用 document.getElementById 编写代码。 因为 JavaScript 区分大小写,所以在编写document.getElementById
时出错是很正常的。 我应该将'by'
的'b'
大写吗? 我应该将Id?
'i'
大写吗? 你明白了。 因为函数是 JavaScript 中的一等公民,所以你总是可以这样做:
var $ = document.getElementById; //freedom from document.getElementById!
当 Prototype 库到达时,他们将获取 DOM 元素的函数命名为'$'
。 几乎所有的 JavaScript 库都复制了这个想法。 Prototype 还引入了一个$$
函数来使用 CSS 选择器选择元素。
jQuery 还调整$
函数,但扩展为使其接受各种“选择器”来获取您想要的元素。 现在,如果您已经在项目中使用 Prototype 并且想要包含 jQuery,那么您将遇到问题,因为'$'
可以引用 Prototype 的实现或 jQuery 的实现。 这就是为什么 jQuery 有 noConflict 选项,以便您可以在使用 Prototype 的项目中包含 jQuery 并慢慢迁移您的代码。 我认为这对约翰来说是一个绝妙的举动! :)
正如所有其他答案所说; 它几乎可以是任何东西,但通常是“JQuery”。
但是,在 ES6 中,它是模板“文字”中的字符串插值运算符,例如。
var s = "new" ; // you can put whatever you think appropriate here.
var s2 = `There are so many ${s} ideas these days !!` ; //back-ticks not quotes
console.log(s2) ;
结果:
这些天有很多新想法!
$()
是jQuery 库中使用的jQuery()
的简写版本。
除了上面的答案, $
在javascript中没有特殊含义,在对象命名中可以随意使用。 在jQuery中,它只是用作jQuery对象和jQuery()函数的别名。 但是,您可能会遇到想将它与另一个也使用 $ 的 JS 库结合使用的情况,这会导致命名冲突。 正是出于这个原因,JQuery 中有一个方法jQuery.noConflict()
。
这是来自jQuery文档的示例:
<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
// Code that uses other library's $ can follow here.
</script>
或者,您也可以使用这样的
(function ($) {
// Code in which we know exactly what the meaning of $ is
} (jQuery));
来自描述jQuery Core Object的 jQuery 文档:
许多开发人员在包含 jQuery 对象的变量名称前加上 $ 前缀,以帮助区分。 这种做法没有什么神奇之处——它只是帮助一些人跟踪不同变量包含的内容。
基本语法是:$(selector).action()
用于定义 jQuery 的美元符号 A(选择器)以“查询(或查找)”HTML 元素 要在元素上执行的 jQuery action()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.