Javascript 无法获取使用eval()计算的字符串的typeof

Javascript 无法获取使用eval()计算的字符串的typeof,javascript,string,object,eval,typeof,Javascript,String,Object,Eval,Typeof,我正在尝试获取使用eval计算的字符串类型,但没有成功 变量是一个字符串,存储在一个数组中,其中包含一个可能对象的名称,我想知道该对象是否已定义 有人能帮忙吗 令人不安的一行是if type of eval x[i][0]!='“未定义”,这是我的代码: var infoslider = [ ["revapi5", "el-masnou", "sant-andreu-de-llavaneres"], ["revapi3", "sant-andreu-de-llavaner

我正在尝试获取使用eval计算的字符串类型,但没有成功

变量是一个字符串,存储在一个数组中,其中包含一个可能对象的名称,我想知道该对象是否已定义

有人能帮忙吗

令人不安的一行是if type of eval x[i][0]!='“未定义”,这是我的代码:

    var infoslider = [
    ["revapi5", "el-masnou", "sant-andreu-de-llavaneres"],
    ["revapi3", "sant-andreu-de-llavaneres", "cardedeu"],
    ["revapi10", "cardedeu", "eudald-carbonell"],
    ["revapi9", "arenys-de-mar", "canet-de-mar"]
];
var x = infoslider;
for (var i = 0; i < x.length; i++) {
    if ( typeof eval( x[i][0] ) !== 'undefined' ) {
        vesa(x[i][0], x[i][2]);
    }
}
I get ReferenceError:未定义revapi5

变量是一个字符串,存储在一个数组中,其中包含一个可能对象的名称,我想知道该对象是否已定义

如果您的意思是可能有一个名为revapi5的变量已声明,也可能没有声明,并且如果声明了该变量,则该变量将有一个非未定义的值,并且您想知道它是否已声明,则可以将typeof移动到您正在评估的字符串中:

但是,几乎可以肯定的是,有一种更好的方法可以解决你试图解决的任何问题

上述示例:

var revapi5={};//我们有5个,但是我们没有其他的 变量信息滑块=[ [第5版,埃尔马斯诺,圣安德烈·德拉瓦内雷斯], [Cardededu sant andreu de llavaneres第3版], [revapi10,cardedeu,eudald carbonell], [revapi9,arenys de mar,canet de mar] ]; var x=信息滑块; 对于var i=0;i 如果您的意思是可能有一个名为revapi5的变量已声明,也可能没有声明,并且如果声明了该变量,则该变量将有一个非未定义的值,并且您想知道它是否已声明,则可以将typeof移动到您正在评估的字符串中:

但是,几乎可以肯定的是,有一种更好的方法可以解决你试图解决的任何问题

上述示例:

var revapi5={};//我们有5个,但是我们没有其他的 变量信息滑块=[ [第5版,埃尔马斯诺,圣安德烈·德拉瓦内雷斯], [Cardededu sant andreu de llavaneres第3版], [revapi10,cardedeu,eudald carbonell], [revapi9,arenys de mar,canet de mar] ]; var x=信息滑块; 对于var i=0;i不要使用eval,请尝试以下操作:

typeof window[ x[i][0] ] !== 'undefined'
取自

更新:

若你们的变量不是全局存储的,那个么你们可以将它们存储的任何对象的窗口交换,假设它在作用域中。。。如果它是同一个对象,那么这应该是可行的


@vol7ron还建议使用.hasownproperty,而不是检查未定义的属性。

不要使用eval,尝试以下方法:

typeof window[ x[i][0] ] !== 'undefined'
取自

更新:

若你们的变量不是全局存储的,那个么你们可以将它们存储的任何对象的窗口交换,假设它在作用域中。。。如果它是同一个对象,那么这应该是可行的


@vol7ron还建议使用.hasownproperty,而不是检查未定义的属性。

什么使您认为您需要或想要在那里求值?变量是存储在数组中的字符串,其中包含一个可能对象的名称,我想知道该对象是否已定义。不太明白。你是说你可能有或者没有一个变量,比如revapi5?,我想,但这看起来像是X/Y的问题:你需要解X,你认为Y会帮助你做到这一点,但是你在做Y时遇到了困难,并问如何做Y-但是如果我们知道X是什么,我们可能会建议一个比Y更好的解决方案:-我想知道revapi5是否实际上是一个已定义的对象。事实上,我想简化一个检查是否定义了这个对象的代码。初始代码为:if typeof revapi3!='未定义的“{vesarevapi3,'el masnou'//masnou}如果类型为revapi5!='未定义的“{vesarevapi5,'arenys de mar'//Entervista Carbonell}如果revapi6的类型为”='未定义的“{vesarevapi6,'arenys de mar'//Cenctiri arenys de mar}//end if typeofMy answer告诉您如何执行此操作,但同样,这是X/Y问题:为什么您想知道revapi5是否是声明的变量?它来自哪里?这是一个全球性的问题吗?一个局部变量?是什么让你认为你需要或想要在那里求值?变量是一个字符串,存储在一个数组中,其中包含一个可能的对象的名称,我想知道是否定义了该对象。不太明白。你是说你可能有或者没有一个变量,比如revapi5?,我想,但这看起来像是X/Y的问题:你需要解X,你认为Y会帮助你做到这一点,但是你在解Y时遇到了困难,并询问如何解Y-但是如果我们知道X是什么,我们可能会提出比X更好的解决方案
Y.:-我想知道revapi5是否实际上是一个已定义的对象。事实上,我想简化一个检查是否定义了这个对象的代码。初始代码为:if typeof revapi3!='未定义的“{vesarevapi3,'el masnou'//masnou}如果类型为revapi5!='未定义的“{vesarevapi5,'arenys de mar'//Entervista Carbonell}如果revapi6的类型为”='未定义的“{vesarevapi6,'arenys de mar'//Cenctiri arenys de mar}//end if typeofMy answer告诉您如何执行此操作,但同样,这是X/Y问题:为什么您想知道revapi5是否是声明的变量?它来自哪里?这是一个全球性的问题吗?一个本地的?@Siguza:谢谢-是为了移动typeof而不是添加第二个,只是在添加一个实例时修复了它。@T.J Crowder它很有效!这是最后的代码:var infoslider=[[revapi5,el masnou,sant andreu de llavaneres],[revapi3,sant andreu de llavaneres,Cardededu],[revapi10,Cardedu,eudald carbonell],[revapi9,arenys de mar,canet de mar];var x=信息滑块;var z=;对于var i=0;i