我知道这可能很明显......但是当我在变量名前加上“$”时,jQuery 到底在做什么。我知道这是将变量放在全局命名空间中,但为什么呢?
6 回答
那是完全错误的。
$
是一个恰好有一个短名称的普通对象(实际上是一个函数)。
$
本身是一个全局的(window
对象的属性)
在 JavaScript$
中是变量名中的有效字符。将 a 添加$
到变量并没有什么特别的。
var $a;
var a$b;
var $;
这些只是变量,没有特殊含义。
jQuery 只是window.$
引用window.jQuery
了语法糖 :-)
$
以(例如)开头的变量var $myvar;
只是另一个变量,没有任何不同。
编辑:
如果通过“前缀”你的意思是:
$(myvar)
那不是“前缀”。我认为它被称为“包装”。它“增强”了变量。你甚至可以“包装”window
它本身...... http://www.bennadel.com/blog/1838-Wrapping-The-Window-Object-In-A-jQuery-Wrapper.htm
它的作用与jQuery(myvar)
. jQuery
是一个函数(如果你愿意的话,一个可调用的对象)。
您是否声明了一个名称以 为前缀的变量$
?
如果你这样写:
$test = 500;
那么是的,您正在使用名为 的变量污染全局命名空间,该变量$test
与任何其他变量没有什么不同($
没有特殊效果)。但在 JQuery 中,您最有可能这样做:
$('test')
这只是一个简单的函数调用。函数名是$
,参数是'test'
你的意思是当你在做:
var $li = $("li");
您以 . 为li
前缀$
。如果您想使用由您决定的前缀,那么您调用变量的名称并不重要$
。如果知道 $variableName 是 jQuery 对象在调试代码时对您有帮助。
jQuery 不能改变 javascript 语言的工作方式。
有两种方法可以创建全局变量
globalVariable = ...
或者
window.globalVariable = ...
第一个不适用于 javascript 严格模式
当 jquery.js 被执行时,它会将全局函数添加到窗口对象 $ 和 jQuery
它不能改变你的变量是本地的还是全局的,这取决于你。