我到处都读到了全局变量不好的地方,应该使用替代方法。特别是在Javascript中,我应该选择哪种解决方案。
我想一个函数,当喂两个参数(functionglobalVariables(Variable,Value))看起来,如果在本地数组存在变量,如果它的值设置为Value,否则,Variable和Value附加。如果在不带参数(functionglobalVariables())的情况下调用该函数,它将返回数组。也许如果仅使用一个参数(functionglobalVariables(Variable))触发函数,则它将返回Variable数组中的值。
functionglobalVariables(Variable,Value)
Value
Variable
functionglobalVariables()
functionglobalVariables(Variable)
你怎么看?我想听听您使用全局变量的替代解决方案和参数。
将如何使用 globalVariables();
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。
FOO.a_func()
FOO