可能重复:
Javascript: is using 'var' to declare variables optional?
在javascript中创建变量时,在变量名称之前添加“var”必须吗?
例如,而不是
var message = "Hello World!"
我可以使用
message = "Hello World!"
我注意到Google Adsense等脚本不使用var
示例:
google_ad_width = 160;
google_ad_height = 600;
google_color_border = "000000";
google_color_bg = "ffffff";
答案 0 :(得分:104)
如果没有var
你创建一个全局变量,并且全局变量是一种很好的方法,可以让不同的函数覆盖其他变量(即它们使代码难以维护)。
使用var
,变量的范围仅限于当前函数(及其中的任何内容 - 可以嵌套函数)。
Google Adsense使用全局变量,因为它将脚本分成两个不同的部分(一个本地和一个远程)。更简洁的方法是调用远程脚本中定义的函数,并将参数作为参数传递,而不是让它从全局范围中获取它们。
现代JS应该用strict mode编写,它禁止自动全局变量(更喜欢在顶层显式声明它们,从而防止在变量名称被拼写时意外的全局变量)。
答案 1 :(得分:9)
是的,您应该始终使用var
。
不使用var
有两个主要缺点:
此外,不使用window
作为全局变量与使用var
不完全相同:使用var
时,它在全局对象上创建的属性具有内部{{1 }}}属性,如果没有var
,则不是这样:
DontDelete
答案 2 :(得分:4)
来自http://www.updrift.com/article/to-var-or-not-to-var-my-javascript
例如,这里的两个相似函数具有非常不同的效果:
var myvar = 0;
function affectsGlobalVar(i){
myvar = i;
}
function doesNotAffectGlobalVar(i){
var myvar = i;
}
答案 3 :(得分:3)
没有var,变量被定义为全局。
答案 4 :(得分:1)
将Google AdSense添加到您的网页时,您会链接许多JavaScript文件。变量在那里定义。
http://pagead2.googlesyndication.com/pagead/show_ads.js应该是您网页中的一个脚本引用。
答案 5 :(得分:1)
对于像我这样没有开悟的人, JavaScript基本上有两个范围 变量:全局和本地。 在a之外分配的变量 函数是全局的,变量 在函数内部分配,使用 var关键字是本地的(不是火箭 手术)。但是,如果你离开了 var keyword off,它分配一个全局 变量,无论它在哪里 声明。
来自:http://opensoul.org/2008/9/4/the-importance-of-var-in-javascript