JavaScript中"$"符号的含义是什么?

cod*_*rex 155 javascript

在以下JavaScript代码中,有一个dollar($)符号.这是什么意思?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});
Run Code Online (Sandbox Code Playgroud)

Nos*_*dna 272

您的代码片段看起来像是从一个流行的JavaScript库(jQuery,ProtoType,mooTools等)引用方法.

$在JavaScript中的使用并不神秘.$只是一个有效的JavaScript标识符.

JavaScript允许上下字母,数字和$_.它$旨在用于机器生成的变量(例如$0001).

Prototype,jQuery和大多数javascript库使用它$作为主要基础对象(或函数).他们中的大多数也有办法放弃$它,以便它可以与另一个使用它的库一起使用.在这种情况下,你使用jQuery而不是$.事实上,$这只是一个捷径jQuery.

  • @Paolo:不确定你的意思.(我以前认为是我接受过的那个.)好吧,我认为我的至少是完全正确的.这包括一些辅助信息,但我不确定它是否合理"多"...... (2认同)
  • 顺便说一下,我在这篇文章中提供了$ function功能背后的一些历史:http://stackoverflow.com/questions/1122690/jquery-and-questions/1122740#1122740 (2认同)

Nol*_*rin 41

这很可能是jQuery代码(更准确地说,是使用jQuery库的JavaScript).

$代表jQuery函数,实际上是一个简写别名jQuery.(与大多数语言不同,$符号不是保留的,可以用作变量名.)它通常用作选择器(即返回在DOM中找到的一组元素的函数).

  • 您应该添加$就像x一样,它可以是您分配给它的任何东西 (3认同)

Sol*_*ogi 38

另一个答案:

有点历史

请记住,'$'没有任何固有的特殊之处.它是一个变量名称,就像其他任何名称一样.在早些时候,人们习惯使用document.getElementById编写代码.因为JavaScript区分大小写,所以在编写document.getElementById时出错是正常的.我应该资本'b'的'by'吗?我应该资助我的Id吗?你得到漂移.因为函数是JavaScript中的一等公民,所以您始终可以执行此操作

var $ = document.getElementById; //freedom from document.getElementById!
Run Code Online (Sandbox Code Playgroud)

[ 编辑:在Firefox 3和谷歌浏览器中,你不能轻易制作别名.在IE6和Firefox2中,上述技术仍然有效.]

当Prototype库到达时,他们命名他们的函数,它获取DOM元素,'$'以节省输入/可读性[编写JS代码时,大多数时候开始选择一些DOM元素].几乎所有的JavaScript库都复制了这个想法.Prototype还引入了$$函数来使用CSS选择器选择元素.

jQuery不仅调整了'$ function',还扩展了它,使它接受所有类型的'选择器'来获得你想要的元素.现在,如果您已经在项目中使用Prototype并想要包含jQuery,那么您将遇到问题,因为'$'可以引用Prototype的实现或jQuery的实现.这就是为什么jQuery可以选择noConflict,这样你就可以在项目中包含jQuery,它使用Prototype并慢慢迁移你的代码.我认为这对John来说是一次精彩的举动!:)

  • `var $ = document.getElementById;`在Firefox或谷歌浏览器中不起作用.你应该使用`function $(id){return document.getElementById(id); 相反.有关更多信息,请参见http://stackoverflow.com/questions/1007340. (10认同)

chc*_*ist 18

$()jQuery库jQuery()使用的简写版本.


Bob*_*Bob 17

正如所有其他答案所说; 它几乎可以是任何东西,但通常是"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) ;
Run Code Online (Sandbox Code Playgroud)

结果:

这些天有很多新想法!

  • 这是一个有用的答案!这是我一直在寻找的,因为我知道我们没有 jQuery 或任何其他库。它基本上是一种在不使用引号和加号等的情况下在较大的字符串中打印变量的方法。 (4认同)

小智 5

除了上面的答案之外,$在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>
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用这样的

(function ($) {
// Code in which we know exactly what the meaning of $ is
} (jQuery));
Run Code Online (Sandbox Code Playgroud)

参考: https: //api.jquery.com/jquery.noconflict/