是否有必要使用关键字'var'在Javascript中声明变量

时间:2014-02-18 20:43:49

标签: javascript variables keyword

我发现在Javascript中声明变量时似乎没有必要使用关键字'var'。事实上,我发现完全省略它没有任何不良副作用。

也许这是不好的形式,但有人可以解释为什么有必要吗?

3 个答案:

答案 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 的情况下创建变量的不良影响。