0

我知道这可能很明显......但是当我在变量名前加上“$”时,jQuery 到底在做什么。我知道这是将变量放在全局命名空间中,但为什么呢?

4

6 回答 6

7

那是完全错误的。

$是一个恰好有一个短名称的普通对象(实际上是一个函数)。

$本身是一个全局的(window对象的属性)

于 2012-08-15T19:10:19.560 回答
2

在 JavaScript$中是变量名中的有效字符。将 a 添加$到变量并没有什么特别的。

var $a;
var a$b;
var $;

这些只是变量,没有特殊含义。

jQuery 只是window.$引用window.jQuery了语法糖 :-)

于 2012-08-15T19:12:07.890 回答
1

$以(例如)开头的变量var $myvar;只是另一个变量,没有任何不同。

编辑:

如果通过“前缀”你的意思是:

$(myvar)

那不是“前缀”。我认为它被称为“包装”。它“增强”了变量。你甚至可以“包装”window它本身...... http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm

它的作用与jQuery(myvar). jQuery是一个函数(如果你愿意的话,一个可调用的对象)。

于 2012-08-15T19:11:22.877 回答
0

您是否声明了一个名称以 为前缀的变量$

如果你这样写:

$test = 500;

那么是的,您正在使用名为 的变量污染全局命名空间,该变量$test与任何其他变量没有什么不同($没有特殊效果)。但在 JQuery 中,您最有可能这样做:

$('test')

这只是一个简单的函数调用。函数名是$,参数是'test'

于 2012-08-15T19:12:27.623 回答
0

你的意思是当你在做:

var $li = $("li");

您以 . 为li前缀$。如果您想使用由您决定的前缀,那么您调用变量的名称并不重要$。如果知道 $variableName 是 jQuery 对象在调试代码时对您有帮助。

于 2012-08-15T19:13:14.620 回答
0

jQuery 不能改变 javascript 语言的工作方式。

有两种方法可以创建全局变量

globalVariable = ...

或者

window.globalVariable = ...

第一个不适用于 javascript 严格模式

当 jquery.js 被执行时,它会将全局函数添加到窗口对象 $ 和 jQuery

它不能改变你的变量是本地的还是全局的,这取决于你。

于 2012-08-15T19:14:33.287 回答