【问题标题】:What is the meaning of "$" sign in JavaScriptJavaScript中的“$”符号是什么意思
【发布时间】:2021-02-03 19:10:51
【问题描述】:

在下面的 JavaScript 代码中有一个美元 ($) 符号。什么意思?

$(window).bind('load', function() {
    $('img.protect').protectImage();
});

【问题讨论】:

标签: javascript


【解决方案1】:

您的 sn-p 代码看起来像是在引用流行的 JavaScript 库之一(jQuery、ProtoType、mooTools 等)中的方法。

在 JavaScript 中使用 $ 并没有什么神秘之处。 $ 只是一个有效的 JavaScript 标识符。

JavaScript 允许大小写字母、数字以及$_$ 旨在用于机器生成的变量(例如 $0001)。

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

【讨论】:

  • @Paolo:不确定你的意思。 (我认为我的以前是公认的。)好吧,我认为我的至少是完全正确的。这包括一些辅助信息,但我不确定它是否证明“很多”......
  • @Noldorin:辅助信息是件好事。您的问题完全没有提及使用 $ 的原因,可以使用它的原因,以及 jQuery 只是使用它的众多库之一。将其作为可接受的答案意味着它是问题的最佳答案,但事实并非如此。
  • +1 它首先是一个有效的 JavaScript 标识符,并且经常被 JavaScript 框架用作第二个别名。
  • @Paolo:通常,是的。然而,没有迹象表明 OP 想知道这一点。直接回答也是一件好事。 :) 话虽如此,我仍然同意这是一个更好的答案。我唯一的狡辩是你对某个特定点的强调。
  • 顺便说一句,我在这里的帖子中提供了 $ 函数背后的一点历史:stackoverflow.com/questions/1122690/jquery-and-questions/…
【解决方案2】:

来自another answer

一点历史

请记住,$ 本身并没有什么特别之处。它是一个变量名,就像其他任何变量一样。在早期,人们过去常常使用 document.getElementById 编写代码。因为 JavaScript 是区分大小写的,所以写document.getElementById 时出错是很正常的。我应该将'b''by' 大写吗?我应该将'i'Id? 大写吗?因为函数是 JavaScript 中的一等公民,所以您总是可以这样做:

var $ = document.getElementById; //freedom from document.getElementById!

当 Prototype 库到达时,他们将获取 DOM 元素的函数命名为 '$'。几乎所有的 JavaScript 库都复制了这个想法。 Prototype 还引入了$$ 函数来使用 CSS 选择器选择元素。

jQuery 还对$ 函数进行了调整,但对其进行了扩展以使其接受各种“选择器”来获取您想要的元素。现在,如果您已经在项目中使用 Prototype 并且想要包含 jQuery,那么您将遇到问题,因为 '$' 可以引用 Prototype 的实现或 jQuery 的实现。这就是为什么 jQuery 有 noConflict 选项的原因,这样您就可以在使用 Prototype 的项目中包含 jQuery 并慢慢迁移您的代码。我认为这对约翰来说是一个绝妙的举动! :)

【讨论】:

  • var $ = document.getElementById; 在 Firefox 或 Google Chrome 中不起作用。您应该改用function $(id) { return document.getElementById(id); }。请参阅stackoverflow.com/questions/1007340 了解更多信息。
  • 我不知道,谢谢格兰特。我可以确认这曾经在 IE6 和 Firefox 2 中工作,因为我经常使用这种技术。我将更新我的主要帖子。
  • 其实应该是:function $(sel) { return document.querySelectorAll(sel); }
  • @Nanoo 您的评论仍然有效,并且在许多情况下很有用。如果您使用您的方法,您甚至可以通过类和 ID 进行搜索。
【解决方案3】:

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

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

【讨论】:

  • 你应该补充一点,$就像x一样,它可以是你分配给它的任何东西
  • 这段代码是什么意思:$input.prop('type') == 'radio';
【解决方案4】:

正如所有其他答案所说;它几乎可以是任何东西,但通常是“JQuery”。

但是,在 ES6 中,它是 template "literal" 中的字符串插值运算符,例如。

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 或任何其他库。它基本上是一种在较大字符串中打印变量而不使用引号和加号等的方法。
【解决方案5】:

$()jQuery() 的简写版本,用于jQuery Library

【讨论】:

    【解决方案6】:

    除了上面的答案之外,$在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));
    

    Ref:https://api.jquery.com/jquery.noconflict/

    【讨论】:

      【解决方案7】:

      来自描述jQuery Core Object的jQuery文档:

      许多开发人员在包含 jQuery 的变量名称前加上 $ 前缀 对象以帮助区分。没什么神奇的 这种做法——它只是帮助一些人跟踪有什么不同 变量包含。

      【讨论】:

        【解决方案8】:

        基本语法是:$(selector).action()

        用于定义 jQuery 的美元符号 A(选择器)以“查询(或查找)”HTML 元素 对元素执行的 jQuery action()

        【讨论】:

          猜你喜欢
          • 2010-09-29
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          • 2014-07-28
          • 2016-11-27
          • 1970-01-01
          • 2011-04-07
          • 2014-05-11
          相关资源
          最近更新 更多