声明JavaScriptvariables时var是否必要?

可能重复:
Javascript:是使用'var'来声明variables是否可选?

当在javascript中创buildvariables时,在variables名之前添加“var”是必须的吗?

例如,而不是

var message = "Hello World!" 

我可以用吗

 message = "Hello World!" 

我注意到像谷歌Adsense脚本不使用变种

例:

 google_ad_width = 160; google_ad_height = 600; google_color_border = "000000"; google_color_bg = "ffffff"; 

如果没有var你创build一个全局variables,而全局variables是一个奇妙的方式来让不同的函数覆盖其他variables(也就是说它们让代码变得很难维护)。

使用var ,variables的作用域被限制在当前函数中(以及其中的任何内容 – 可以嵌套函数)。

谷歌的Adsense使用全局,因为它将脚本分成两个不同的部分(一个本地和一个远程)。 更简洁的方法是调用远程脚本中定义的函数,并将参数作为parameter passing,而不是从全局范围中select它们。

是的,你应该总是使用var

不使用var有两个主要缺点:

  • 在函数中访问一个没有在函数中定义的variables将导致解释器为这个名称的variables查找作用域链,直到它find一个variables或者它到达全局对象(通过window在浏览器中访问)将创build一个属性。 这个全球性的资产现在遍布全球,可能造成混乱和难以察觉的错误;
  • 访问未声明的variables将在ECMAScript 5严格模式下导致错误。

此外,不使用var作为全局variables与使用var不完全相同:使用var ,它在全局对象上创build的属性具有内部的DontDelete属性,而不是没有var的情况:

 // 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. 对于全局variables,这并不重要,但是您可能想要使用它来保持一致性。
  2. 总是尝试使用“var”声明本地函数中的variables。 它确保您使用的是variables的本地副本,而不是另一个范围中的同名variables。

例如,这里的两个类似的函数有着非常不同的效果:

 var myvar = 0; function affectsGlobalVar(i){ myvar = i; } function doesNotAffectGlobalVar(i){ var myvar = i; } 

没有variables被定义为全局variables。

将Google AdSense添加到您的网页时,您会链接多个JavaScript文件。 variables在那里定义。

http://pagead2.googlesyndication.com/pagead/show_ads.js应该是你的页面中的脚本引用之一。;

对于像我这样的无知者,JavaScript基本上有两个variables的范围:全局和局部。 在函数之外分配的variables是全局variables,而在函数内部使用var关键字分配的variables是本地的(不是火箭手术)。 但是,如果closuresvar关键字,则会分配一个全局variables,而不pipe它是在哪里声明的。

来自: http : //opensoul.org/2008/9/4/the-importance-of-var-in-javascript