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中的美元符号函数是经常使用的库函数,因此需要一个简短的名称.
Alb*_*oPL 38
$符号是变量和函数的标识符.
这清楚地解释了美元符号的用途.
以下是另一种解释:http://www.vcarrer.com/2010/10/about-dollar-sign-in-javascript.html
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)
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 时遇到 $ 。
正则表达式中的$ 符号表示行尾。
我会添加这个:
在 chromium 浏览器的开发者控制台(还没有尝试过其他)中,这$是一个本机函数,其作用很document.querySelector可能是受 JQuery 启发的别名$
使用 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 对象的变量可以立即识别,代码更具可读性,并且消除了使用$().