JQuery: "var test" 和 "var $test" 有什么区别?

15

这些语句的区别是什么?我知道 "var $test" 声明了一个jQuery变量,但jQuery变量和一般的JavaScript变量有何不同呢?

3个回答

30

$test 是一种惯例,用于表示此变量是 jQuery 对象,您可以在其上调用标准函数,而 test 可能是标准的 DOM 元素,您无法在其上调用 val 函数。

例如:

var $test = $('#someId');
var test = document.getElementById('#someId');

你可以使用 $test.text();,但是你不能使用 test.text();


那就意味着,即使我不使用"$"符号,我仍然可以调用该对象上的标准函数,对吗? - MD Sayem Ahmed
3
没错,这只是一个名字而已。它绝对没有任何含义!如果你问以t开头的变量名是否特殊,那么答案也是一样的。 - Felix Kling
我以前不知道这个惯例,但它确实很有道理!谢谢你的澄清,Felix。 - malvim

24

没有区别。$ 是 JavaScript 标识符中有效的字符,但没有特殊含义。事实上,在 ECMAScript 3 规范的第7.6节中指出:

美元符号($)和下划线符号 (_)可以在标识符的任何位置使用。美元符号仅用于机械生成的代码。

......尽管现在的情况可能已经使该建议过时了。事实上,最近的 ECMAScript 5 规范省略了最后一句话。


2

var $testvar test之间没有区别。但了解变量中包含的数据类型总是有益的:例如,如果其他人只想修改您代码中的一个函数而不必阅读代码,或者必须使用console.log查看变量内容以了解其中的内容。

以下是一些示例:

var arrTest = [1, 2, a, b, c], //Array
objTest = {test: 1, test2: 2}, //Object
strTest = "test", //String
intTest = 4, //integer
$test = $("#test") //jqueryObject

但是它也可以像这样工作。
var Test1 = [1, 2, a, b, c], //Array
test2 = {test: 1, test2: 2}, //Object
Test3 = "test", //String
Test4 = 4, //integer
$test = $("#test") //jquery Object

我想你所困惑的是来自jQuery的$()形式。
jQuery基本上是在变量名$上定义的函数集合:
var $ = function(e){ // the jquery magic }

但是您仍然可以将$somethingelse用作变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接