2012-11-20 68 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 + '\"'; 
 
}

結果應該是在引號