如何查看是否已在Javascript中定义变量名称

时间:2012-08-29 10:36:07

标签: javascript variables

在Javascript中,我定义了全局变量sld_label,其中label可以是任何字符串。这些初始化为具有setval函数的对象。我需要在一个名为qq的字符串参数中传递标签的函数内检查是否已定义sld_label。 如何在不引发错误的情况下执行此操作?

目前我有以下内容(可以在Firebug中生成错误): -

function setclrques(qq,op)
{
  if (typeof(eval('sld_'+qq))=='object') eval('sld_'+qq+'.setval('+op+')');
}

帮助!

4 个答案:

答案 0 :(得分:1)

如果是全局,那么它最终成为window的成员,以便以下工作:

if (typeof window['sld_' + qq] == 'undefined') alert('sld_' + qq + ' is not defined.');

答案 1 :(得分:0)

if (typeof window["sld_" + qq] === "object") {
    window["sld_" + qq].setval(op);
}

答案 2 :(得分:0)

如果要检查变量是否存在

if (typeof yourvar != 'undefined') // Any scope
if (window['varname'] != undefined) // Global scope
if (window['varname'] != void 0) // Old browsers

答案 3 :(得分:0)

我实现了类似的东西。

function Test()
{
}

Test.prototype.setval = function(options)
{
    alert(options);
}

function setclrques(qq,op)
{
    var obj = window['sld_'+qq];
    if( obj!=undefined && obj.setval!=undefined )
    {
        obj.setval(op);
    }
}

var sld_qwer = new Test();
setclrques("qwer","test!");

但是我建议你考虑使用关联数组而不是单独的变量来存储对象:

function Test()
{
}

Test.prototype.setval = function(options)
{
    alert(options);
}

var sld = [];
sld["qwer"] = new Test();

function setclrques(qq,op)
{
    var obj = sld[qq];
    if( obj!=undefined && obj.setval!=undefined )
    {
        obj.setval(op);
    }
}

setclrques("qwer","test!");