有人可以用Javascript解释美元符号吗?

Kei*_*gan 354 javascript naming-conventions

有问题的代码在这里:

var $item = $(this).parent().parent().find('input');
Run Code Online (Sandbox Code Playgroud)

变量名中美元符号的目的是什么,为什么不排除呢?

cob*_*bal 361

变量中的'$'对解释器来说没有什么特别之处,就像下划线一样.

从我所看到的,很多人使用jQuery(这是你的示例代码对我来说)倾向于为包含带有$的jQuery对象的变量添加前缀,以便它们易于识别并且不会与整数相混淆.

$()jQuery中的美元符号函数是经常使用的库函数,因此需要一个简短的名称.

  • 注意:默认情况下,jQuery使用"$"作为"jQuery"的快捷方式.这对其他Javascript库的使用有一些影响.请参阅http://docs.jquery.com/Using_jQuery_with_Other_Libraries (78认同)
  • Thimmayya你的评论"默认情况下,jQuery使用"$"作为"jQuery"的快捷方式"应该在Jquery网站的每个页面的顶部以粗体字母表示,他们的例子非常可靠. (21认同)
  • 换句话说,$与变量/函数名称中的任何可接受符号相当.执行`var $ = function(){}`与执行`var a = function(){}`非常相似. (15认同)
  • @ ThrowawayAccount3Million这只是名字的一部分.在$ $ scope的情况下,$是该名称中的一个字符.就像你在`$ scope`结束时取掉`e`一样,它不起作用,所以取$`也不行.在你看到类似`$("a").addClass("test")`的情况下,美元符号就是任何东西的全名. (4认同)

Alb*_*oPL 38

$符号是变量和函数的标识符.

https://web.archive.org/web/20160529121559/http://www.authenticsociety.com/blog/javascript_dollarsign

这清楚地解释了美元符号的用途.

以下是另一种解释:http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html

  • 我不确定我会把这个链接称为"明确"的解释.在定义函数和变量名时,是否真的需要6个段落来解释$只是一个有效字符? (8认同)
  • JavaScript确实有类型;在任何情况下,美元符号甚至与此相关?它只是一个字符,恰好是Javascript中的合法标识符。 (2认同)

UpT*_*eek 37

在您的示例中,除了作为名称的字符之外,$没有特殊意义.

但是,在ECMAScript 6(ES6)中,$可能代表模板文字

var user = 'Bob'
console.log(`We love ${user}.`); //Note backticks
// We love Bob.
Run Code Online (Sandbox Code Playgroud)

  • @VLAZ 不要将语言语法与库约定混淆。这个问题和这个答案都没有提到 jQuery,而只提到了 JavaScript——并且在 JavaScript 中,除了 ES6 中的模板文字之外,“$”符号没有任何特殊含义。 (5认同)

tho*_*ter 31

美元符号被视为普通字母或下划线(_).它对翻译没有特别的意义.

与许多类似语言不同,Javascript中的标识符(例如函数和变量名称)不仅可以包含字母,数字和下划线,还可以包含美元符号.它们甚至被允许以美元符号开头,或者包含一个美元符号而不是其他任何东西.

因此,$是Javascript中的有效函数或变量名称.

为什么要在标识符中使用美元符号?

语法并没有真正强制执行标识符中美元符号的任何特定用法,因此由您决定如何使用它.过去,通常建议仅在生成的代码中启动带有美元符号的标识符- 即,不是手工创建的代码,而是代码生成器创建的代码.

但是,在您的示例中,似乎并非如此.看起来有人只是为了好玩而在一开始就设置了一个美元符号 - 也许他们是一个PHP程序员,他们是出于习惯或其他原因而做的.在PHP中,所有变量名称前面都必须有一个美元符号.

现在,解释器中的美元符号还有另一个常见含义:jQuery对象,其名称由单个美元符号($)组成.这是从早期的Javascript框架(如Prototype)借用的约定,如果jQuery与其他此类框架一起使用,则会出现名称冲突,因为它们都将使用该名称$(jQuery可以配置为其全局对象使用不同的名称) .Javascript中没有什么特别的东西允许jQuery使用单个美元符号作为其对象名称; 如上所述,它只是另一个有效的标识符名称.


Vas*_*nyk 11

美元符号在ecmascript 2015-2016 中用作“模板文字”。例子:

var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
Run Code Online (Sandbox Code Playgroud)

这里的工作示例:https : //es6console.com/j3lg8xeo/ 注意这个符号“ ` ”,它不是正常的引号。

你也可以在使用库jQuery 时遇到 $ 。

正则表达式中的$ 符号表示行尾。


Sod*_*odj 8

我会添加这个:

在 chromium 浏览器的开发者控制台(还没有尝试过其他)中,这$是一个本机函数,其作用很document.querySelector可能是受 JQuery 启发的别名$


SNa*_*Nag 6

使用 jQuery 时,使用$符号作为变量名的前缀只是按照惯例;它是完全可选的,仅用于指示该变量包含 jQuery 对象,如您的示例中所示。

这意味着当需要在该对象上调用另一个 jQuery 函数时,您不需要$()再次将其包装起来。例如,比较这些:

// the usual way
var item = $(this).parent().parent().find('input');
$(item).hide(); // this is a double wrap, but required for code readability
item.hide(); // this works but is very unclear how a jQuery function is getting called on this 

// with $ prefix
var $item = $(this).parent().parent().find('input');
$item.hide(); // direct call is clear
$($item).hide(); // this works too, but isn't necessary
Run Code Online (Sandbox Code Playgroud)

使用$前缀,已经保存 jQuery 对象的变量可以立即识别,代码更具可读性,并且消除了使用$().


Cla*_*diu 5

没理由。也许编写它的人来自 PHP。它与您将其命名为“_item”或“item”或“item$$”具有相同的效果。

作为后缀(如“item$”,发音为“items”),它可以表示一个可观察的对象,例如 DOM 元素,作为类似于匈牙利符号的称为“芬兰符号”的约定。