2011-10-10 102 views
-3

在我畢生的追求中的函數寫在一行上我的全部代碼,並把所有的精神病維護者噩夢,我提出以下問題:調用變量聲明

有什麼辦法,我可以實例化一個對象,將其分配給一個變量,並在同一行上的實例化上調用一個函數?

如我:

var abc=new window(); 
window.show() 

但我想沿着線的東西...

(var abc= new window).show() 
+1

您有沒有看過縮小的JavaScript?整個框架只能是一行「代碼」。 – rwilliams

+2

不知道爲什麼這得到了downvoted。有了大腦,你可以意識到這個問題顯然是關於一個*聲明*,而不管行數。 – user123444555621

+0

@ Pumbaa80從OP:「把我的整個代碼寫在一行上」,「在同一行上」。 – rwilliams

回答

0

我認爲qour問題的實質是:你可以用var表達式裏面?

答案是否定的。一個var聲明是一個聲明,而不是一個表達式。但括號內容必須是表達式。

如果你感興趣的技術細節,請參見http://ecma262-5.com/ELS5_HTML_with_CorrectionNotes.htm#AnnexA,A.3和A.4


編輯:但是,您可以使用

var abc; 
(abc = new window()).show(); 

...這是相當我猜這裏毫無意義。

0

怎麼樣?

var abc=new window();abc.show(); 

或者在一個聲明中

​​

或者使用eval()

eval("var abc=new window();abc.show();") 
+0

使用分號會破壞將它粘在一行上的目的。 (例如:thats 2 statements,而不是1) – Alex

+0

已將其更新爲一條語句。 – rwilliams

+0

不使用eval,它的邪惡:) –

1

當然。使用匿名函數可以讓語句嵌入到您的表達式中:

var abc = (function (abc) { return abc.show(), abc }(new window)); 
+0

這實際上是一個非常酷的主意! – Alex