JavaScript 中的“$”符号是什么意思

新手上路,请多包涵

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

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

原文由 coderex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 426
2 个回答

您的代码片段看起来像是引用了流行的 JavaScript 库(jQuery、ProtoType、mooTools 等)之一的方法。

在 JavaScript 中使用 $ 并不神秘。 $ 只是一个有效的 JavaScript 标识符。 JavaScript 允许大写和小写字母(在各种脚本中,不仅仅是英语)、数字(但不是第一个字符)、 $_ 等.¹

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


¹ 对于标识符的第一个字符,JavaScript 允许 _“…任何具有 Unicode 属性“IDStart”的 Unicode 代码点…” 加上 $_规范中的 详细信息。对于标识符中的后续字符, 它允许 带有 ID_Continue 的任何字符(包括 _ )和 $ 字符(以及一些历史控制字符)。

原文由 Nosredna 发布,翻译遵循 CC BY-SA 4.0 许可协议

来自 另一个答案

一点历史

请记住, $ 本身并没有什么特别之处。它和其他变量名一样是一个变量名。在早期,人们习惯于使用 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 并慢慢迁移你的代码。我认为这是 John 的绝妙举动! :)

原文由 SolutionYogi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题