2013-12-09 110 views
3

選擇功能我有一個代碼:根據三元運營商

a=function(x){alert(x)} 
b=function(x){document.write(x)} 
c=1; 
[c==1?a:b](':p'); 

,但它不工作。有可能做我想做的事嗎?

+0

哦,太棒了..謝謝你們! =) – user3073240

+3

爲什麼人們喜歡寫這樣不可讀的代碼?爲了天分,請使用'if/else'並讓您的代碼可重新啓動。如果你想要小尺寸,然後將其最小化。我的優先級是「正確」,「可讀/可維護」,「緊湊」,「快速」。只有極少數情況下(通常在詳細的性能分析之後)是否值得犧牲前兩者的速度或大小。 – jfriend00

回答

11

是的,只需用括號替換方括號即可。您正在創建數組文本,但要隔離的表達式:

(c==1?a:b)(':p'); 

這也將工作,但沒有任何理由使用它:

[c==1?a:b][0](':p'); 
+0

嗯..那jQuery呢?我不能..請幫助 $(element)(c == 1?attr:css)(agrument); – user3073240

+1

在這種情況下,你需要括號:-)'$(element)[c == 1?'attr':'css']('?')' – bfavaretto

+0

Thanx ..你是最棒的! =) – user3073240