JavaScript中的全局变量声明

时间:2014-10-28 16:20:57

标签: javascript

以下是全球延迟的两个代码示例:

var globalVariable = 'something';

globalVariable = 'something';

这些解决方案之间的区别是什么,甚至还有一个?哪一个是更好的解决方案?我应该避免这些解决方案吗?如果有,为什么?

编辑:两者都是在全球范围内定义的。

2 个答案:

答案 0 :(得分:4)

当您省略关键字var时,它会使变量自动为全局变量,而不管它在何处定义。因此,即使它是在函数中定义的,它也随处可见

因此,第二个选项globalVariable = 'something';使其成为全局。

如果第一个选项var globalVariable = 'something';在全局级别定义,那么它将只是全局的。例如,如果这是在函数中定义的,那么它只对该函数可见。

除非必要,否则建议避免声明全局变量。

有关范围界定的更多信息 - http://www.w3schools.com/js/js_scope.asp

答案 1 :(得分:2)

如果你把它放在全局范围内,第一个只是一个全局声明,但是,一般来说,如果你想要一个全局变量,你应该在全局范围内明确地声明它(即使你以后只为它分配一个值) )。

第二个将始终创建一个全局变量。

那就是说,你应该避免两种选择。你几乎从不真正需要全局变量。如果有一个全局变量很有用,通常最好将脚本包装在IIFE中并将变量声明为该级别。

(function () {
    var not_quite_a_global;

    function foo() {
        not_quite_a_global = 1;
    }
}());

这会阻止它们与其他同时加载的其他脚本或模块中的同名变量冲突。