회사업무 중 typeof 를 쓰다가 재밌는 걸 발견해서...
-----------------------
<!DOCTYPE html>
<html>
<body>
<button onclick="activeAction()">테스트클릭</button>
<script>
function activeAction() {
if (typeof test() == "undefined") {
console.log("undefined");
} else {
console.log(typeof test());
console.log("defined");
}
}
function test() {
console.log("들어옴");
// 만일 string 타입이 반환될 때의 동작을 보고 싶으면 아래 주석해제
//return "문자열";
}
</script>
</body>
</html>
-------------
위 문서는 복사해서 쓰셔도 됩니다.
버튼을 누르면 콘솔에
들어옴
undefined
가 차례로 뜨네요. typeof를 함수에 쓰면 해당 함수를 실행시켜 리턴값을 받아온 후 해당 리턴값이 어떤 타입인지 평가해서 돌려주는 모양입니다. 자바스크립트 공부가 깊지 않아 왜 이렇게 동작하는지는 모르겠습니다만.. typeof 도 연산자이기 때문에 해당 함수의 리턴값을 돌려주는 식으로 동작해서가 아닌가 싶습니다.
예를 들어
var sum = test1() + test2()
console.log(sum);
function test1() {
return 1;
}
function test2() {
return 2;
}
이러면 콘솔에 3이 나오죠. 자바스크립트는 참 알다가도 모르겠습니다.