我需要使用new Function()
構造函數創建一個具有可變數量參數的函數。類似這樣的:新函數()帶有可變參數
args = ['a', 'b'];
body = 'return(a + b);';
myFunc = new Function(args, body);
是否有可能沒有eval()
?
非常感謝,夥計們!其實,a + b並不是我最關心的問題。我正在處理和擴展模板的代碼,我需要將未知(和可變)數量的參數傳遞給函數,以便將它們作爲局部變量引入。
例如,如果一個模板包含:
<span> =a </span>
我需要輸出參數a
的價值。也就是說,如果用戶宣佈擴大功能
var expand = tplCompile('template', a, b, c)
,然後調用
expand(4, 2, 1)
我需要替換=a
與4
。是的,我很清楚功能類似於eval()
,運行速度非常慢,但我沒有任何其他選擇。
爲什麼不通過數組循環?無論你想要做什麼,可能有更好的方法。 – 2010-11-15 10:53:44
我擔心eval無法避免,因爲您試圖將純文本評估爲代碼。 – 2010-11-15 11:02:36
有更好的方法來做到這一點。如果你絕對必須使用'new Function()',那聽起來像是一項家庭作業。在這種情況下,教師正在教你如何做錯事情。 – darioo 2010-11-15 11:13:51