2013-06-05 1 views
11

다음과 같은 자바 스크립트 고려 존재하는지 확인하십시오 전달 - 변수가

function getType(obj){ 
    return(typeof(obj)) 
} 
alert(typeof(obj)) //alerts "undefined" correctly 
alert(getType(obj)) //throws an error: ReferenceError: obj is not defined 

왜 이런 일이 될 수 있습니까? 해결 방법이 있습니까? 변수가 있는지 확인하는 함수를 작성하려고합니다.

+2

글쎄, 그 이름을 가진 * something *이 전역 컨텍스트에 존재하는지 확인하기 위해'if (window [ "obj"])'를 사용할 수 있습니다. –

답변

6

문제는 typeof와는 아무런 관련이 없습니다. 문제는 정의되지 않은 변수를 함수에 전달할 수 없다는 것입니다.

function doNothing(obj){ 
} 
doNothing(obj); 

이 코드 오류 너무 결과 : Uncaught ReferenceError: obj is not defined
그래서 그것을 호출되지 않습니다 당신이, 당신의 함수 내에서 무엇을 쓰기 코드 문제가되지 않습니다. 함수 호출 전에 오류가 발생합니다.

typeof은 기능이 아니라 연산자입니다. 이것은 함수와 같은 방식으로 동작하지 않는 이유입니다.

3

정의되지 않은 개체를 전달하려고하면 함수가 실패합니다. typeof() 기능을 캡슐화 할 수 없습니다. 글쎄, 할 수 있지만 정의되지 않은 객체를 전달할 때 항상 오류가 발생합니다.

4

typeof은 연산자가 아니며 함수가 아니기 때문에 함수에는 가질 수없는 힘이 있습니다. 당신이하려고하는 것을 할 방법이 없습니다.

+1

또한 연산자로 피연산자 주위에 중괄호가 필요하지 않습니다. – Alnitak

+0

나는 충분히 적당 할 것 같다. 정보 주셔서 감사합니다. – cronoklee

관련 문제