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

alert (typeof $ .fx.step._default); 경고 (typeof $ .Tween.propHooks._default.set); 코드에이 두 줄을 추가하면 도움이 될 것입니다. 하나는 "정의되지 않음"이고 다른 하나는 "함수"입니다. 물론 함수의 이름을 지정할 수는 없습니다. – Dukeland