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