2014-10-05 78 views
0

我有这样一个功能:JavaScript的转换变量名转换为字符串

function testFunction(option) 
{ 
    alert(option); 
} 

(实际的功能并不仅仅是回答选项)

当然,它如果做testFunction("qwerty");工作,或testFunction(myvar);,其中myvar是一个变量。

如果我这样做testFunction(qwerty);,它不起作用,其中qwerty不是一个变量,如预期的那样。

我想知道是否有一种方法可以使功能检查,以查看是否option是一个变量或字符串(如在上面的例子中"qwerty"myvar),如果它是正常继续并提醒串或变量的值。然而,如果它不是一个变量或字符串,而是一个未定义的变量(例如上面示例中的qwerty),那么我希望它提醒变量的名称(在这种情况下为qwerty)。

这可能吗?

谢谢!


一些例子:

var myvar = "1234"; 
testFunction("test"); //alerts "test" 
testFunction(myvar); //alerts "1234" 
testFunction(qwerty); //alert "qwerty" 
+0

SO上有一个问题(接近)完全相同的标题。看到这个问题http://stackoverflow.com/questions/7983896/convert-variable-name-to-string-in-javascript – Matthias 2014-10-05 12:42:03

+0

不,这是不可能的。 – 2014-10-05 12:45:12

+0

这是什么目的? – xShirase 2014-10-05 12:55:04

回答

1

这里你的问题是,testFunction(QWERTY);甚至不会达到这个功能。

Javascript无法解释变量'qwerty',因为它没有被定义,所以它会在那里崩溃。

只是为了好玩,这里有一个方法,当你试图解释一个未定义的变量做你要求什么,通过捕捉抛出的错误:

function testFunction(option){ 
     console.log(option); 
} 


try { 
    var myvar = "1234"; 
    testFunction("test"); //alerts "test" 
    testFunction(myvar); 
    testFunction(qwerty); //alert "qwerty" 
}catch(e){ 
    if(e.message.indexOf('is not defined')!==-1){ 
     var nd = e.message.split(' ')[0]; 
     testFunction(nd); 
    } 
} 

JSFiddle here

记住,你绝对应该从来没有这样做,相反,尝试使用您的程序中的现有变量,它的效果会更好;)