2012-02-22 108 views
3

$ onevar one在JavaScript中有什么区别?因为两者都有效。

实施例:

$one = 'hello word!'; 

var one = 'hello word!'; 

工作实施例:http://jsfiddle.net/rS9PR/

+1

将$放在变量的前面是jQuery的匈牙利表示法。请不要这样做。 – Daff 2012-02-22 18:08:11

+0

one ='hello word!'; // global scope, var one ='hello word!'; // local scope – 2012-02-22 18:15:46

回答

2

var one保证了变量被设置为本地作用域。

默认情况下,$one会将变量分配给全局范围。

0

它们都是变量名。在JavaScript中,$字符是变量名的有效字符。 var关键字只是在您的示例中将变量名称设置为范围。

由于它在不同的JavaScript库(如jQuery)中使用,$变得非常流行,但它是一个完全有效的变量名称字符。

0

没有区别,变量名可能包含$登录。您刚刚宣布了两个不同的变量 - $oneone

upd:根据@yi_H评论 - 两个变量实际上有不同的范围。 var关键字用于在当前作用域中声明变量,但如果省略了var,则它在全局名称空间中定义

+0

你错过了'var'部分 – 2012-02-22 18:06:06

0

$ one在全局作用域中定义,并且将在每个函数中都可见。 var one在其封闭范围内定义,并且在外部不可见。

0

有些人用 “$” 作为前缀,表示jQuery对象,如:

$text = $("#myTextElement"); 
3

没有什么特别之处$;只是另一个变量名称。 “var”的使用告诉解释器该变量具有局部范围。无var =>全局。即;从页面的任何地方访问。

0

$one中的$并不意味着什么特别。这只是另一个正常的JavaScript变量。在一些开发人员中有一个约定,其中前缀变量$用于指示该变量包含jQuery对象。这纯粹是为了风格和可读性,并没有技术或语法上的影响。

当您从声明中省略var,浏览器将变量附加到全局对象:

foo = 'bar'; 
alert(window.foo); // 'bar' 

这对于具有比JavaScript的一个微不足道的金额任何网站一些非常显著影响(在过去几年中这个类别一直在快速增长)。最佳做法是总是声明您的变量var以防止后来的一些问题。

有关变量范围的更多详细信息,请参阅:What is the scope of variables in JavaScript?

相关问题