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