我知道这可能很明显......但是当我用'$'作为变量名前缀时,jQuery究竟在做什么。我知道这是将变量放在全局命名空间中,但为什么呢?
答案 0 :(得分:7)
这完全是假的。
$
是一个普通的对象(实际上是一个函数)碰巧有一个简短的名字。
$
本身是全局的(window
对象的属性)
答案 1 :(得分:2)
在JavaScript中$
是变量名中的有效字符。将$
添加到变量没有什么特别之处。
var $a;
var a$b;
var $;
这些只是变量,没有特殊含义。
jQuery只是让window.$
引用window.jQuery
的合成糖: - )
答案 2 :(得分:1)
以$
开头的变量(例如var $myvar;
)只是另一个变量,在任何方面都没有区别。
修改强>
如果通过“前缀”表示你的意思:
$(myvar)
不是“前缀”。我认为它被称为“包装”。它“增强”变量。你甚至可以“包裹”window
本身...... http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm
它的作用与jQuery(myvar)
完全相同。 jQuery
是一个函数(如果你愿意的话,是一个可调用的对象)。
答案 3 :(得分:0)
您是否声明了名称前缀为$
的变量?
如果你这样写:
$test = 500;
然后是的,您使用名为$test
的变量污染全局命名空间,这与任何其他变量没有区别($
没有特殊效果)。但是在JQuery中,你最有可能这样做:
$('test')
这只是一个简单的函数调用。函数名称为$
,参数为'test'
答案 4 :(得分:0)
你的意思是你在做什么:
var $li = $("li");
您在li
前加$
作为前缀。如果您想使用$
前缀,那么无论您调用变量是什么都无关紧要。如果知道$ variableName是jQuery对象,那么在调试代码时它会有所帮助。
答案 5 :(得分:0)
jQuery无法改变javascript语言的工作方式。
有两种方法可以创建全局变量
globalVariable = ...
或
window.globalVariable = ...
第一个不使用javascript严格模式
执行jquery.js时,它会将全局函数添加到窗口对象 $和jQuery
它不能改变你的变量是局部的还是全局的,这取决于你。