2013-07-26 39 views
0

這裏是什麼,我喜歡做一個例子:如果分離功能的條件

var example = { 
    before: function() { 
     `if (1 == 1) {` 
    }, 
    after: function() { 
     `}` 
    } 
}; 

example.before(); 
alert('Success!'); 
example.after(); 

我想用在這種情況下一個if (1 == 1)條件涉及alert('Success!')

可能嗎?

+3

你真的不想寫這樣的代碼...如果我遇到了一個代碼庫,試圖使用模糊的,不起眼的,像函數一樣的宏來粘貼字符串,所有這些字符串聚集在一起形成可執行代碼,我會撕裂我的頭髮退出。當然,除非我無法想象,對於這樣的事情有某種合法用途。但是,你的嘗試將永遠不會工作。您需要在包含代碼的字符串上調用'eval()',但合法用途之間的差距很小。 –

+0

「我想通過if(1 == 1)來引發alert('Success!')」這條線是什麼意思......你的意思是條件是當你(1 == 1)在那時你是真的想要顯示警報?也如果(1 == 1),這將始終評估爲真。 – Jayesh

+0

@Jayesh:他正在編寫兩個函數,它們將if語句的封閉位作爲字符串返回,並且認爲,如果他將函數*圍繞一段代碼調用,則中​​間的文本將被重新解釋爲代碼並執行。 –

回答

0

試試這個

var example = { 
    before: function() { 
     return 'if (1 == 1) {'; 
    }, 
    after: function() { 
     return '}'; 
    } 
}; 

var code = example.before() + "alert('Success!');" + example.after(); 
eval(code); 

但是,如果你正在寫一些東西,經常你不應該去瘋狂像這樣在你的產品代碼。

+0

謝謝,我會盡力解決這個frankenstein。 :) –