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'이라고 표시 됩니다.
자, 궁금한 것이 해결 되었나요? ^^
'javascript' 카테고리의 다른 글
팝업으로 POST 로 값 넘기기 (0) | 2010.07.28 |
---|---|
테이블 행추가 삭제 (0) | 2010.05.13 |
html & 자바스크립트 총집합 [펌] (0) | 2010.05.07 |
윈도우 창 하단 문구 나오게 하기 (0) | 2010.03.30 |
이미지 미리보기 (0) | 2010.02.11 |