Javascript - 在哪里放置常量,全局或本地?

时间:2015-04-07 18:48:24

标签: javascript variables constants global local

我是javascript的新手,试图了解全局变量和局部变量。我一直听到"避免全局变量"。我有一堆只在一个函数中使用的字符串变量,所以我应该将它们设为本地,对吧?我永远不需要改变那里的值,所以我想知道......每当我调用函数时,这是否意味着所有这些变量一次又一次地被设置为相同的值。是否需要javascript一次又一次地一次又一次地设置这些变量?是否有更好的方法来处理您知道永远不会改变价值的变量。这就是我得到的......

function test() {
var a="the quick brown fox blah blah blah...";
var b="Hello world blah blah blah....";
var c...
var d.... etc, etc....
<more code goes here>
}

对我而言,每次调用test()时,所有变量都会再次设置。如果我将它们放在功能之外,那么它们只会被设置一次吗?但那会让他们变得全球化,对吧?

3 个答案:

答案 0 :(得分:4)

并不是说它在性能方面确实会有所不同,但你可以将它们排除在全球范围之外,但仍然只定义它们一次:

(function() {
    var a = "a";
    var b = "b";
    window.test = function() {
        console.log(a);
    };
})();

答案 1 :(得分:0)

你是对的,每次调用test函数时都会设置这些变量,所以将它们移到函数之外是一个好主意(可能有一些解释器优化可以防止任何性能损失,但是我仍然认为代码可读性是一个好主意。

最好的解决方案是将所有代码包装在一个立即调用的函数表达式(IIFE)中,如下所示:

(function main() {

    var a="the quick brown fox blah blah blah...";
    var b="Hello world blah blah blah....";
    var c...
    var d.... etc, etc....

    function test() {
        <more code goes here>
    }

    // call test() many times

}());

答案 2 :(得分:0)

您可以拥有任意数量的变量。我怀疑你是否会创建如此多的变量,它可能会影响你的应用程序性能。

您应始终牢记的是应用程序的清晰度。代码必须是可读的。

如果你只在一个函数中使用一个变量,那么你也应该在该函数中声明它。

建议您避免创建全局变量。

如果将代码包装在自调用函数中,则很容易实现:

(function() {
    var CONSTANTS = {
        key: "VALUE",
        key2: "VALUE2",
    };

    function doSomething() {
        var local_property = "foo";
        console.log(CONSTANTS.key2); // it works
    }
} ());

doSomething(); // error
console.log(CONSTANTS.key); // you won't be able to access it here

我建议您阅读以下文章,以便更好地了解JavaScript的工作原理:

Variable statement

Closures

Grammar and types