2014-08-29 20 views
0

我有這樣的代碼:如何連接函數名稱中的變量?

var a = 1; 

function test + a() { 
    alert('test');  
} 

test1(); 

我從瀏覽器控制檯收到此錯誤:

Uncaught SyntaxError: Unexpected token + 

所以,我怎麼能串聯變量atest其最終運行功能test1這裏?

jsFiddle

+0

參考。 http://stackoverflow.com/questions/5117127/javascript-dynamic-variable-name,http://stackoverflow.com/questions/11515924/access-javascript-variables-dynamically,http://stackoverflow.com/questions/ 12826154/can-i-create-dynamic-object-name-in-javascript?lq = 1,http://stackoverflow.com/questions/13291554/dynamic-variables-names-in-javascript – user2864740 2014-08-29 05:35:24

+0

只需將函數分配給*給出*「動態變量名稱」。但更好:使用顯式數組/對象並將函數映射到索引/屬性。 – user2864740 2014-08-29 05:37:33

回答

4

在JavaScript中,所有的變量/聲明的方法在全球範圍是對象window的成員,因此你可以聲明函數是這樣的:

var a = 1; 

window['test' + a] = function() { 
    alert('test');  
} 

test1(); 

jsFiddle

PS - 你應該做這樣的事情的情況很少。如果您不確定,請編輯您的問題。與使用附加到全局窗口對象的動態命名函數相比,可能有更好的方法來實現你想要的。只是因爲它可以做並不意味着它應該是。

1

試試這個:

var a = 1; 
var name="test"+a; 
var func = new Function(
    "return function " + name + "(){ alert('test'); }" 
)(); 
//function call 
func();