본문 바로가기

javascript

re: [object]가 뜨는 이유!


질문자 채택

re: [object]가 뜨는 이유!

scriptwin
답변채택률 87.4%
2010.04.23 01:06

질문자 인사

좋은 답변 덕분에 지식iN이 더 풍요로워진 것 같아요!

안녕하세요..

 

void연산자에 대해 간략히 말씀을 드려보자면..

void연산자는 값을 반환하지 않으며, 코드표현식을 평가하는 연산자입니다.

 

<a href=""> 여기 href속성 값으로는 네트웍 상의 리소스에 접근하기 위해 url 이라는 것을 주게 되는데...

링크를 클릭하게 되면 http프로토콜을 통해 특정 웹의 자원을 웹브라우저 상에 dom 요소로 뿌려줍니다.

그렇다면 한번 생각해봅시다.

 

<A>태그를 통해 무언가 화면에 뿌려지는 것이 웹브라우저의 작동 방식인데,

우리가 이러한 요청을 할 때.. http프로토콜이라는 것이 없어서는 안되는 것이었습니다.

그런데, 코들 자세히 보시면 좀 다르게  <a href="javascript:... 이와 같은 식이었습니다.

여기서 javascript: 라는 것도 프로토콜입니다.

물론 가짜 프로토콜(pseudo protocol) 이지요..

이 가짜 프로토콜을 통해 이것도 화면에 무언가를 뿌려지게 하는 것도 가능할 법도 하지 않을까요?

그러나 특별한 기능이 있는 것은 아니고 단순히 자바스크립트 구문을 실행하는 정도 입니다.

 

그런데 문제는 javascript: 는 실행 후 return값이 존재하면, 그 값의 type을 화면에 뿌려줍니다.

다시 코드를 봅시다..

<a href="javascript:window.open('http://www.naver.com','win');">링크1</a>

이경우는 window.open을 통해 윈도우 객채가 리턴되는 형태입니다.

 

만약 위코드를 아래처럼하게 된다면, object라는 것이 화면에 나타나지 않을 것입니다.

<a href="javascript:var a = window.open('http://www.naver.com','win');">링크2</a>

a 변수에 할당했기 때문에 반환하는 값은 없게 됩니다.

또는 ..

<a href="javascript:void(window.open('http://www.naver.com'));">

 

그렇다면 다른 것도 해볼까요?


 function test(){
  var sss = "핼로우 void";
  return typeof(sss);
 }

<a href="javascript:test();">sss</a>

 

위코드를 실행하게 되면, 화면에 'string'이라고 표시 됩니다.

자, 궁금한 것이 해결 되었나요? ^^

scriptwin
파워
식물신
채택 1414 (87.7%)

입력된 URL이 없습니다.

질문하시고 코드는 메일로 보내주세요

'javascript' 카테고리의 다른 글

팝업으로 POST 로 값 넘기기  (0) 2010.07.28
테이블 행추가 삭제  (0) 2010.05.13
html & 자바스크립트 총집합 [펌]  (0) 2010.05.07
윈도우 창 하단 문구 나오게 하기  (0) 2010.03.30
이미지 미리보기  (0) 2010.02.11