是否可以使用三元运算符来声明函数名?
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);
};
this[foo || bar] = function(){alert(true)}
事情是,如果
bar
等于“bar”,你将用一个函数覆盖自己......
你真正想要的是这样的东西吗?
window[foo ? foo : bar] = function (){
alert(true);
};
请注意,“窗口”在某些环境下不可用,尽管所有浏览器都应该有它。