在Javascript中,我定义了全局变量sld_label,其中label可以是任何字符串。这些初始化为具有setval函数的对象。我需要在一个名为qq的字符串参数中传递标签的函数内检查是否已定义sld_label。 如何在不引发错误的情况下执行此操作?
目前我有以下内容(可以在Firebug中生成错误): -
function setclrques(qq,op)
{
if (typeof(eval('sld_'+qq))=='object') eval('sld_'+qq+'.setval('+op+')');
}
帮助!
答案 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!");