JavaScript 需要帮助使变量全局化

javascript need help making variable global

本文关键字:变量 全局 帮助 JavaScript      更新时间:2023-09-26

在我的代码中,有一个值我试图被称为currentParameter.value,我需要将其全局化,以便我可以在另一个页面上使用它。由于某种原因,我无法使currentParameter.value全局可用。每当我尝试对它发出警报时,我都会被定义。我不知道是什么原因造成的,我认为任何事情都可以全球化。我的代码如下。

 function determineTemplate(customInt) {
     var templateArray = [];
     var hasDropdown = false;
      for(var i=0,maxI=customInt.length;i<maxI;i+=1) {
           var Interaction = customInt[i];
           for(var j=0,maxJ=Interaction.parameterSet.param.length;j<maxJ;j+=1) {
                  var currentParameter = Interaction.parameterSet.param[j];
                  if (currentParameter.name === 'INTERACTION-TYPE') {
                     if (currentParameter.value !== '_itemData') {
                        var intTemplate = {
                            'multipleChoice': {"type" : "04719d91", "data" : Interaction, "id" : Interaction.id},
                            'dragDrop': {"type" : "94ed89c0", "data" : Interaction, "id" : Interaction.id},
                            'dropdown': {"type" : "8a01a4d0", "data" : Interaction, "id" : Interaction.id},
                            'select': {"type" : "b1fb3531", "data" : Interaction, "id" : Interaction.id}
                        };
                        var currentTemp = intTemplate[currentParameter.value];                              
                        if (currentTemplate !== undefined) {
                            if (currentParameter.value === 'dropdown') {
                                if (!hasDropdown) {
                                    templateArray.push(currentTemplate);     
                                    hasDropdown = true;
                                }
                            } else {
                                templateArray.push(currentTemp);     
                            }
                        }
                     }
                  }
           }
     };
     return templateArray; 
}; 

要使其全局化,您只需更改此行:

var currentParameter = Interaction.parameterSet.param[j];

window.currentParameter = Interaction.parameterSet.param[j];

但是,您将无法在另一个页面中使用window因为页面也会更改。

尝试使用

window.templateArray

而不是

var templateArray

这将在窗口范围内声明变量,本质上是全局的。

您还可以在函数作用域之外声明变量。 例如:

var templateArray = [];
function determineTemplate(customInt) {

也许我误解了,但是如果您尝试在页面之间传递变量,则无法使用全局变量执行此操作。 相反,您需要通过 url 或 cookie 传递数据,或者让服务器以其他方式持久化数据,并在加载时将其发送到页面。

我认为全局变量是邪恶的,但如果你想currentParameter.value全球化,这里有两种方法浮现在脑海中。

1)在全局范围内定义currentParameter,并在函数中使用它

2)您可以将其添加到全局对象中,并调用该对象。

window.value= currentParameter.value