首页 > 解决方案 > 制作一个用“eval”全局制作的数组

问题描述

我有 2 个功能。在第一个函数中,我声明了一个数组,其中包含来自用户的答案名称,我使用eval.

function whengetanswerfrominput()
{
    var answer = document.getElementById("input").value;
    eval("var " + answer + " = ['bla','bla'];");
}
function whenclickotherbutton()
{
    var answer = document.getElementById("input").value;
    eval(answer + ".push('bla');");
}

但是后来我得到一个错误,说第二个eval没有whenclickotherbutton()定义。如何在第二个函数中声明数组以便他知道它。

> Uncaught ReferenceError: array is not defined.

标签: javascriptarrays

解决方案


你得到这个的原因是你在第一个函数( )ReferenceError的范围内定义变量。whengetanswerfrominput您无法在第二个函数中访问它,因为您在第一个函数中对其进行了初始化。

您必须在第二个函数之外初始化变量才能访问它。

var answer = document.getElementById("input").value;
eval("var " + answer + " = ['bla','bla'];");

function whenclickotherbutton()
{
    var answer = document.getElementById("input").value;
    eval(answer + ".push('bla');");
}

推荐阅读