Is var necessary when declaring Javascript variables?
Possible Duplicate:
Javascript: is using 'var' to declare variables optional?
在javascript中创建变量时,在变量名称之前添加"var"必须吗?
例如,而不是
1 | var message ="Hello World!" |
我可以用吗
1 | message ="Hello World!" |
?
我注意到Google Adsense等脚本不使用var
例:
1 2 3 4 | google_ad_width = 160; google_ad_height = 600; google_color_border ="000000"; google_color_bg ="ffffff"; |
如果未使用
Globals是一种很好的方法,可以让不同的函数覆盖彼此的变量(即它们使代码难以维护)。
如果使用
(
Google Adsense使用全局变量,因为它将脚本分成两个不同的部分(一个本地部分和一个远程部分)。更简洁的方法是调用远程脚本中定义的函数,并将参数作为参数传递,而不是让它从全局范围中获取它们。
现代JS应该以严格模式编写,它禁止隐式全局变量(更喜欢在顶级显式声明它们,从而防止在变量名称被拼写时意外的全局变量)。
是的,你应该总是使用
不使用
-
访问未在该函数中定义的函数内的变量将导致解释器查找具有该名称的变量的作用域链,直到它找到一个变量或者它到达全局对象(在浏览器中通过
window 访问)它将创建一个属性。这个全局属性现在可以在任何地方使用,可能导致混淆和难以发现的错误; - 访问未声明的变量将导致ECMAScript 5严格模式出错。
此外,不使用
1 2 3 4 5 6 7 8 9 10 11 | // Next line works in any ECMAScript environment. In browsers, you can // just use the window object. var globalObj = (function() { return this; })(); var x = 1; delete globalObj.x; alert(x); // Alerts 1, x could not be deleted y = 2; delete globalObj.y; alert(y); // Error, y is undefined |
来自http://www.updrift.com/article/to-var-or-not-to-var-my-javascript
例如,这里的两个相似函数具有非常不同的效果:
1 2 3 4 5 6 7 | var myvar = 0; function affectsGlobalVar(i){ myvar = i; } function doesNotAffectGlobalVar(i){ var myvar = i; } |
没有var,变量被定义为全局变量。
For the unenlightened like myself,
JavaScript basically has two scopes
for variables: global and local.
Variables assigned outside of a
function are global, and variables
assigned inside of a function, using
the var keyword, are local (not rocket
surgery). However, if you leave the
var keyword off, it assigns a global
variable, regardless of where it’s
declared.
来自:http://opensoul.org/2008/9/4/the-importance-of-var-in-javascript
将Google AdSense添加到您的网页时,您要链接许多JavaScript文件。变量在那里定义。
http://pagead2.googlesyndication.com/pagead/show_ads.js应该是您网页中的脚本引用之一。