我发现在Javascript中声明变量时似乎没有必要使用关键字'var'。事实上,我发现完全省略它没有任何不良副作用。
也许这是不好的形式,但有人可以解释为什么有必要吗?
答案 0 :(得分:5)
使用关键字var
可确保您的变量适当确定范围。如果您不使用该关键字,那么JavaScript将自动将该变量创建为全局范围,这可能会在以后执行您的页面时导致问题。
name = 'Bic'; // implicitly global
function myFunc() {
var name = 'John'; // this variable is scoped here
console.log(name); // John
getName(); // Bic
}
function getName() {
console.log(name); //Bic
}
myFunc();
getName();
在上面的代码中,我声明了一个全局名称和一个范围名称。注意,myFunc()完成执行后,全局名称仍然存在。 name
是大多数HTML元素的属性。在这个特定的答案中,我的名称声明没有var
关键字会对页面的执行产生不利影响。 name
的值会超出范围,这会影响定位元素和其他内容。如果您查看此Fiddle,并在加载后再次单击“运行”,您会注意到它会自动打开一个新选项卡。这是因为name的原始值已被破坏,页面不知道在哪里真正打开。
作为一般规则,总是使用var
关键字声明变量是很好的,因为这样可以更容易地遵循该变量的范围,因为它可以避免不可预见的问题。
正如Pointy所指出的,'use strict'编译指示(在ECMAScript 5中引入)实际上禁止在没有var
关键字的情况下声明变量。
答案 1 :(得分:1)
如果您没有声明它,也许您正在访问全局变量。要小心,因为你可能会产生不良副作用。
答案 2 :(得分:1)
根据定义,声明变量需要 var 关键字。还有其他创建变量的方法,例如将它们包含在形式参数列表中:
function foo(a, b, c) {...}
这里 a , b 和 c 的创建或多或少都是因为它们是用 var 声明的。在其他答案中注明了在没有 var 的情况下创建变量的不良影响。