在jQuery中使用美元符号VS var有什么区别?

我正在与一个在jQuery中声明变量时从不使用var的开发人员合作。 就像是:

$x = "hello"; $y = "world"; $a = x + " " + y; 

jQuery对此没有任何问题,他已经做了一段时间了。 我一直用var:

 var x = "hello"; var y = "world"; var a = x + " " + y; 

我们遇到一个问题,美元符号引起了一个问题(这是一年前所以我不记得这个问题)。

有没有人知道或掌握两者之间的差异以及为什么一个更好或应该用于另一个?

我做了一些谷歌搜索,但他们都谈论var $x; vs var x; var $x; vs var x;

使用美元符号不是var的替代品。 变量名中的$与任何其他字符相同。 $通常附加到包含jQuery对象的变量。 IE:

 var el = document.getElementById('id'); 

与:

 var $el = $('#id'); 

所以它主要用于区分。 它对脚本的执行没有任何影响。

引用中的var$完全不相关。 事实上,在全球范围内:

 var $el = $('#id'); 

是相同的

 $el = $('#id') 

美元符号没有做任何特殊的事情,它只是变量名称的一部分。

声明没有var 的变量会产生一个全局变量 。

 $x = "hello"; $y = "world"; $a = x + " " + y; 

这段代码错了。 xy未定义。

实际上$x并没有声明x$xvar $x相同而不是 var x

$x是一个变量名,如任何其他名称

你可以写:

  x = "hello"; y = "world"; a = x + " " + y; 

这与以下内容相同:

  $x = "hello"; $y = "world"; $a = $x + " " + $y; 

对于全局定义的变量没有var通常不会导致问题,当使用具有相同名称但不同函数/字符串的变量时,您应该在另一个范围内使用var声明它,以防止它超过原始全局变量。

http://jsfiddle.net/YWK7T/1/

 $x = "hi#1"; alert($x); //alerts hi#1 as $x is declared globally function hi(){ var $x = "hi#2"; alert($x); } hi(); //alerts hi#2 as $x within the function scope is hi#2 alert($x); //alerts hi#1 the previous $x was defined within the scope. function hi3(){ $x = "hi#3"; } hi3(); //replaces global vairiable $x to hi#3 alert($x); //alerts hi#3