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

Javascript - Where to put Constants, Global or Local?

本文关键字:全局 常量 在哪里 Javascript-      更新时间:2023-09-26

我是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()时,所有变量都会重新设置。如果我把它们放在函数之外,它们不是只设置一次吗?但这将使他们全球化,对吧?

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

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

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

您应该始终牢记的是申请的清晰性。代码必须可读。

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

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

如果您将代码封装在一个自调用函数中,这是很容易实现的:

(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的工作原理:

可变语句

关闭

语法和类型

你说得对,每次调用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
}());