有问题的代码在这里:
var $item = $(this).parent().parent().find('input');
变量名称中美元符号的用途是什么,为什么不仅仅排除它呢?
document.querySelector
和document.querySelectorAll
有问题的代码在这里:
var $item = $(this).parent().parent().find('input');
变量名称中美元符号的用途是什么,为什么不仅仅排除它呢?
document.querySelector
和document.querySelectorAll
Answers:
变量中的“ $”对解释器而言没有什么特别的含义,就像下划线一样。
据我所见,许多使用jQuery的人(这就是您的示例代码对我而言的样子)倾向于给包含jQuery对象的变量加上$前缀,以使它们易于识别并且不会与整数混淆。 。
$()
jQuery中的美元符号函数是一个经常使用的库函数,因此最好使用短名称。
var $=function(){}
和做一样var a=function(){}
。
jQuery(document).ready(function($){
...然后$在函数实现中使用。
$scope
$,则是该名称中的字符之一。就像您e
在的末尾起飞一样$scope
,它将无法工作,因此,$
也将无法使用。在您看到类似的情况下,$( "a" ).addClass( "test" )
美元符号就是它的全名。
$符号是变量和函数的标识符。
这清楚地说明了美元符号的作用。
这是另一种解释:http : //www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
美元符号的处理方式与普通字母或下划线(_
)相同。这对口译员没有特殊意义。
与许多类似的语言不同,Javascript中的标识符(例如函数名和变量名)不仅可以包含字母,数字和下划线,还可以包含美元符号。甚至允许它们以美元符号开头,或者仅包含美元符号,不能包含其他任何符号。
因此,$
是Javascript中的有效函数或变量名。
为什么要在标识符中使用美元符号?
语法实际上并没有强制标识符中使用美元符号,因此您要如何使用它取决于您。过去,通常建议仅在生成的代码中以美元符号开头标识符,也就是说,不是手动创建的代码,而是由代码生成器创建的代码。
但是,在您的示例中,情况似乎并非如此。似乎有人刚开始就以美元符号表示乐趣-也许他们是出于习惯而这样做的PHP程序员。在PHP中,所有变量名都必须在其前面带有美元符号。
如今,解释器中的美元符号还有另一个常见含义:jQuery对象,其名称仅包含一个美元符号($
)。这是从较早的Javascript框架(例如Prototype)借用的约定,如果jQuery与其他此类框架一起使用,则会发生名称冲突,因为它们都将使用该名称$
(可将jQuery配置为对其全局对象使用不同的名称) 。Javascript中没有什么特别的允许jQuery使用单个美元符号作为其对象名称的方法。如上所述,它只是另一个有效的标识符名称。
var $j = jQuery.noConflict();
$ j 冲突了。
美元符号在ecmascript 2015-2016中用作“模板文字”。例:
var a = 5;
var b = 10;
console.log(`Sum is equal: ${a + b}`); // 'Sum is equlat: 15'
这里的工作示例:https : //es6console.com/j3lg8xeo/ 注意此符号“ ` ”,它不是普通引号。
您还可以在使用库jQuery时遇到$ 。
正则表达式中的 $符号表示行尾。
这是一个很好的简短视频说明:https : //www.youtube.com/watch?v=Acm-MD_6934
根据Ecma,国际标识符名称是根据Unicode标准第5章 “标识符”部分中给出的语法进行解释的标记,并进行了一些小的修改。标识符是一个IdentifierName,它不是ReservedWord(请参见7.6.1)。Unicode标识符语法基于Unicode标准指定的规范性和信息性字符类别。所有符合标准的ECMAScript实现都必须将Unicode标准3.0版中指定类别中的字符视为这些类别中的字符。此标准指定了特定的字符添加项:
在IdentifierName中的任何位置都允许使用美元符号($)和下划线(_)。
进一步的阅读可以在以下网站找到:http : //www.ecma-international.org/ecma-262/5.1/#sec-7.6
Ecma International是一个成立于1961年的行业协会,致力于信息和通信技术(ICT)和消费电子(CE)的标准化。
当使用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对象的变量,并使代码更具可读性,并使用消除了两次/多次包装$()
。