2012-07-04 4 views
1

가능한 중복 : 리턴 '정의되지 않은'실행될 때
Function Arguments Passing and Return이 자바 스크립트 코드를 반환 '정의되지 않은'

나는이

var foo = { 
    bar: function() { 
     return this.baz; 
    }, 
    baz: 1 
}; 
(function() { 
    return typeof arguments[0](); 
})(foo.bar); 

이 조각과 약간의 도움이 필요합니다 누군가가 왜 이렇게 설명 할 수 있습니까?

+1

흠, 내가 전에에서이 정확한 조각을 보았다 SO ... 구글과 – leppie

+2

@leppie 나는이 http://stackoverflow.com/q/8587730/995876을 발견 : P 얼마나 슬픈 그이 허용 대답 잘못되었습니다 : X – Esailija

+0

@ Esailija : 그건 내가 기억하는 사람조차도 아닙니다! 1 주일이나 2 주 전이었습니다. – leppie

답변

0

통화에 올바른 범위를 사용해야합니다. foo를 범위로 명시 적으로 설정하면 예상 된 결과가 제공됩니다.

var foo = { 
    bar: function() { 
     return this.baz; 
    }, 
    baz: 1 
}; 
(function() { 
    return arguments[0].call(foo); 
})(foo.bar); 
관련 문제