2012-11-20 66 views
1

我有一个小问题:把双变量之间的变量

我有一个JavaScript函数。

var func = function(variable) 
{ 
    result = variable; 
} 

如果我打电话

func(rabbit); 

我需要的结果是 “兔子”。

我不知道如何把两个引号之间的变量。

+0

怎么样'FUNC( “兔子”)'? –

+4

函数不可能知道调用者传递的变量的名称。 – SLaks

+0

@SLaks:...只要你不解析带字符串化函数的堆栈跟踪:-) – Bergi

回答

1

假设rabbit应该是一个字符串:

func("rabbit"); 

如果rabbit实际上是一个变量,那么有没有办法做到这一点,因为变量(意思是可变的实现的表示)是不实际传递给函数,而是它的值。

0

我从你的问题中无法判断你是否想要“兔子”成为属性名称或价值。所以这里是:

var func = function(variable) { 
    window[variable] = 'abc'; // Setting the variable as what is passed in 
    window.result = variable; // Normal 
} 

func('rabbit'); // Will set both window.rabbit to 'abc', and window.result to 'rabbit' 

虽然,我不会建议设置全局变量。 More info

1

实际上有一种古老的方式来检索变量名称。

var func = function(variable) 
{ 
    console.log(variable); // outputs "white" 
    console.log(arguments.callee.caller.toString().match(/func\((.*?)\)/)[1]); // outputs "rabbit" 
} 

rabbit = 'white'; 

func(rabbit); 

看到它运行http://jsfiddle.net/Q55Rb/

+0

如果函数被调用两次,这将无法正常工作。此外,这些属性已弃用。 – SLaks

+0

这就是为什么我说这是一个可怕而古老的方式。 – lukedays

0

好吧,我认为这是我的问题。现在我很确定那不是它,但我不知道那是什么。

我有这个在我的功能:

defaults = {title :{'pan':-1,'left':0,'volume':0.30,'top':111}}; 

其中标题是从功能的变量。但是,结果我得到了默认的标题,而不是存储在名为title的变量中的实际标题。你明白我说的吗?

1

你能做到这一点

function whatever(input) { 
 
    return '\"' + input + '\"'; 
 
}

结果应该是在引号