当前位置: 首页 > 面试题库 >

JavaScript全局变量不正确,应该使用哪种替代解决方案?

戴嘉珍
2023-03-14
问题内容

我到处都读到了全局变量不好的地方,应该使用替代方法。特别是在Javascript中,我应该选择哪种解决方案。

我想一个函数,当喂两个参数(functionglobalVariables(Variable,Value))看起来,如果在本地数组存在变量,如果它的值设置为Value,否则,VariableValue附加。如果在不带参数(functionglobalVariables())的情况下调用该函数,它将返回数组。也许如果仅使用一个参数(functionglobalVariables(Variable))触发函数,则它将返回Variable数组中的值。

你怎么看?我想听听您使用全局变量的替代解决方案和参数。

将如何使用 globalVariables();

function append(){
    globalVariables("variable1","value1"); //globalVariables() would append variable1 to it's local array.
};

function retrieve(){
    var localVariable1 = globalVariables("variable1"); //globalVariables() would return "value1".
};

function retrieveAll(){
    var localVariable1 = globalVariables(); //globalVariables() would return the globalVariable()'s entire, local [persistently stored between calls] array.
};

function set(){
    globalVariables("variable1","value2"); //globalVariables() would set variable1 to "value2".
};

这是单例模式BTW吗?

在这种特定情况下,一个函数可能会在某个时间点设置一个变量,而另一个函数(可能在用户提交表单时)就需要获取该变量。因此,第一个函数无法将变量作为参数传递给后一个函数,因为永远不会从第一个函数调用它。

谢谢,谢谢您的帮助!


问题答案:

不鼓励在javascript中使用全局变量的主要原因是,在javascript中,所有代码都共享一个全局名称空间,而javascript也隐含了全局变量,即。在本地范围内未明确声明的变量将自动添加到全局名称空间。过于依赖全局变量可能导致同一页面上的各个脚本之间发生冲突。

减少全局变量的一种方法是使用YUI模块模式。基本思想是将所有代码包装在一个函数中,该函数返回一个对象,该对象包含需要在模块外部访问的函数,并将返回值分配给单个全局变量。

var FOO = (function() {
    var my_var = 10; //shared variable available only inside your module

    function bar() { // this function not available outside your module
        alert(my_var); // this function can access my_var
    }

    return {
        a_func: function() {
            alert(my_var); // this function can access my_var
        },
        b_func: function() {
            alert(my_var); // this function can also access my_var
        }
    };

})();

现在要在其他模块中使用函数,请使用FOO.a_func()。解决全局名称空间冲突的这种方法只需要更改的名称FOO



 类似资料:
  • 本文向大家介绍javascript中局部变量和全局变量的区别详解,包括了javascript中局部变量和全局变量的区别详解的使用技巧和注意事项,需要的朋友参考一下 javascript有两种变量:局部变量和全局变量。当然,我们这篇文章是帮助大家真正的区别这两种变量。 首先,局部变量是指只能在本变量声明的函数内部调用。全局变量时整个代码中都可以调用的变量。当然,单单从字面上理解肯定是不清楚的,下面我

  • 今天在课堂上,我的老师告诉我,我不应该在python中使用全局变量,因为函数应该能够独立存在。我想我可以通过参数和返回值来实现这一点?任何帮助都会很好,谢谢。

  • 问题内容: 三年来,我一直在使用一些JavaScript小片段,但是现在我正在构建一个React应用程序,并且正在研究它。有一件我不了解的基本事情。React使用Dispatcher and Stores构建其Flux模式,我不明白的是,该Dispatcher在所有应用程序中都是可见的,因为Actions使用分派器来分派动作,而Stores向Dispatcher注册以获取通知(因此并非每次都是新的

  • 本文向大家介绍Python实现全局变量的两个解决方法,包括了Python实现全局变量的两个解决方法的使用技巧和注意事项,需要的朋友参考一下 本文针对Python的全局变量实现方法简述如下: 先来看下面一段测试程序: 运行结果是: 很显然,这并不是我们想要的结果。 针对这一问题的解决方法就是采用全局变量: 运行结果为: 需要注意:哪里需要全局变量,哪里声明一下;但是函数千万不要传参数,比如用Fuc(

  • 下面是代码: null null 当我点击乘法或除法按钮触发函数时,我得到的结果是NAN,但我认为num1和num2都是全局变量,有人能帮我弄清楚为什么这两个都没有定义吗?

  • 本文向大家介绍浅谈JavaScript的全局变量与局部变量,包括了浅谈JavaScript的全局变量与局部变量的使用技巧和注意事项,需要的朋友参考一下 一、JavaScript scope 的划分标准是function函数块,不是以 if、while、for来划分的 二、JavaScript在执行之前会对整个脚本文件进行预编译(对脚本文件的声明部分做分析,包括局部变量部分),从而确定实变量的作用域