0

是否可以使用三元運算符聲明函數名稱?三元運算符函數聲明

var foo, 
    bar = 'bar'; 

(foo || bar) = function(){ // Invalid left-hand side in assignment [Bad assignment] 
    alert(true); 
}; 

[foo || bar] = function(){ // Invalid left-hand side in assignment [Bad assignment] 
    alert(true); 
}; 

(foo ? foo : bar) = function(){ // Invalid left-hand side in assignment [Bad assignment] 
    alert(true); 
}; 
+1

我猜,沒有.... – Azodious

+0

太可怕了回答:P – yckart

回答

2
this[foo || bar] = function(){alert(true)} 

事情是,如果bar等於「吧」,你要改寫自己一個功能...

+0

好吧,在我的情況下工作如上所述,但不是在我的真實世界的例子:http://jsfiddle.net/ARTsinn/2pk9y/5/ – yckart

0

你真正想要的是這樣的事情?

window[foo ? foo : bar] = function(){ 
    alert(true); 
}; 

請注意,「窗口」在某些環境中不可用,儘管所有的瀏覽器都應該有它。

+0

好的,在我的情況下工作,如上所述,但不是在我的真實世界的例子:http://jsfiddle.net/ARTsinn/2pk9y/5/ – yckart

+1

警報(typeof $ .fx.step._default); alert(typeof $ .Tween.propHooks._default.set); 在代碼中添加這兩行可能會幫助您理解它。一個是「未定義」,另一個是「功能」。當然,你不能用它們來命名你的功能。 – Dukeland