Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查看是否在Javascript中定义了变量名_Javascript_Variables - Fatal编程技术网

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

如何查看是否在Javascript中定义了变量名,javascript,variables,Javascript,Variables,在Javascript中,我定义了全局变量sld_label,其中label可以是任何字符串。这些被初始化为具有setval函数的对象。我需要检查,在一个名为qq的字符串参数中传递标签的函数中,是否定义了sld_标签如何在不引发错误的情况下执行此操作? 目前,我有以下内容(虽然可以工作,但会在Firebug中生成错误):- 救命啊 如果是全局的,那么它最终将成为窗口的成员,因此以下功能有效: if (typeof window['sld_' + qq] == 'undefined') alert

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

目前,我有以下内容(虽然可以工作,但会在Firebug中生成错误):-


救命啊

如果是全局的,那么它最终将成为
窗口的成员,因此以下功能有效:

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

如果要检查变量是否存在

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

我实现了类似的东西

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!");

如果变量定义为false或0(零),检查将失败!啊,是的,这是真的,我会解决它。它的关键是使用窗口[…]作为变量名!谢谢这已经被问了很多次了。这是最好的解决方案,因为没有呼叫“eval”-谢谢!好建议!我不知道JavaScript支持关联数组。谢谢
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!");