有人能解释一下Javascript中的美元符号吗?

有人能解释一下Javascript中的美元符号吗?,javascript,naming-conventions,Javascript,Naming Conventions,有关守则如下: var $item = $(this).parent().parent().find('input'); 变量名中美元符号的用途是什么,为什么不排除它?没有理由。也许编写它的人来自PHP。它的效果与您将其命名为“_item”或“item”或“item$$”的效果相同 作为后缀(如“item$”,发音为“items”),它可以表示一个可观察的元素,例如DOM元素,作为一种类似于匈牙利符号的约定。符号是变量和函数的标识符 这清楚地解释了美元符号的含义 这里有另一种解释:变量中的“

有关守则如下:

var $item = $(this).parent().parent().find('input');

变量名中美元符号的用途是什么,为什么不排除它?

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


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

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

这清楚地解释了美元符号的含义


这里有另一种解释:

变量中的“$”对解释器来说并没有什么特殊意义,就像下划线一样

从我所看到的,许多使用(在我看来,这就是您的示例代码)的人倾向于在包含jQuery对象的变量前面加上$前缀,这样它们就很容易识别,而不会与整数混淆


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

美元符号被视为普通字母或下划线(
\u
)。它对口译员没有特殊意义

与许多类似语言不同,Javascript中的标识符(如函数名和变量名)不仅可以包含字母、数字和下划线,还可以包含美元符号。他们甚至被允许以美元符号开头,或者只包含美元符号而不包含其他符号

因此,
$
在Javascript中是一个有效的函数或变量名

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

该语法实际上并没有在标识符中强制使用美元符号的任何特定用法,因此如何使用它取决于您自己。在过去,通常建议仅在生成的代码中以美元符号开头标识符,也就是说,代码不是手工创建的,而是由代码生成器创建的

然而,在您的示例中,情况似乎并非如此。看起来有人只是为了好玩才在开头加上一个美元符号——也许他们是一个PHP程序员,出于习惯或者别的什么。在PHP中,所有变量名前面必须有一个美元符号


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

下面是一个很好的简短视频说明:

根据Ecma,国际标识符名称是根据Unicode标准“标识符”部分给出的语法解释的标记,只需稍作修改。标识符是不是保留字()的标识符名称。Unicode标识符语法基于Unicode标准指定的规范性和信息性字符类别。Unicode标准3.0版中指定类别中的字符必须被所有符合要求的ECMAScript实现视为这些类别中的字符。本标准规定了特定的字符添加:

在标识符名称中的任何位置都允许使用美元符号($)和下划线(u)

有关更多信息,请访问:


Ecma International是一个成立于1961年的行业协会,致力于信息和通信技术(ICT)和消费电子产品(CE)的标准化。

在您的示例中,$除了作为名称的一个字符外,没有任何特殊意义

但是,在ECMAScript 6(ES6)中,$可能代表一个

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

美元符号在ecmascript中用作“模板文字”。 例如:

以下是工作示例: 注意这个符号“`”,它不是普通的引号

在使用libraryjQuery时,您还可以满足$


$sign in正则表达式表示行尾。

使用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
使用
$
前缀,已经保存jQuery对象的变量可以立即识别,代码可读性更高,并且消除了使用
$()
的双重/多重包装

“在JavaScript中使用美元符号并不常见,但是 专业程序员经常使用它作为主程序的别名 函数在JavaScript库中

例如,在JavaScript库jQuery中,主函数
$
用于选择HTML元素。在jQuery中,表示“全选” p元素”


通过

我的答案是,这里缺乏技术上的复杂程度,甚至使用了“technomalogical”这样的词,这些词实际上并不在字典中,但很少使用,例如字典中也找不到的“易受骗”一词

除此之外,下面是我对一个简单问题的简单回答,用一种简单的方式来回答一个像这样的问题,这个问题问起来非常复杂,而简单的答案是
// 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