티스토리 뷰
(참고 : http://insanehong.kr/post/javascript-function/)
인터프린터가 자바스크립트 코드를 해석함에 있어서 Global 영역의 선언된 코드블럭을 최상의 Scope로 끌어올리는 것을 호이스팅이라 한다.
함수, 변수등을 아래에 선언하더라도 js엔진이 이것들을 실행블럭의 최상단으로 할당한다.
여기서 실행블럭이라 하면 js는 함수(function)단위이다.
헌데 대입(=)구문으로 들어간 것들(변수에 할당된것)은 따라 가지 않고 {} 로 선언된 것들만 최상단에 자동으로 위치하게된다.
즉, function a(){~~~} 는 호출구문 아래 작성되었더라도 엔진에 의해 블럭의 최상단으로 옮겨져 해당 함수를 어디서든 호출하여도 에러가 나지 않지만 var a='a' 로 선언된것은 var a='undefined'; ~~~ a='a'; 처럼 undefined 로 먼저 블럭의 최상단에 선언된후 작성된 위치에서 할당과 실행이 이루어진다.
그러니 뭔가를 선언하고자 한다면 블럭의 최상단에 하는것이 오류를 미리 예방할 수 있다.
(공부하면서 작성한것이라 오류/오타가 있을수 있음)
예:::
함수 -
a(); //---> print 'a'
function a(){
console.log('a');
}
a(); //---> error
var a=function(){
console.log('a');
};
===> 실제 컴파일된 모습은 아래와 같다
var a='undefined'; //---> 당연히 함수가 아니니 정의되지 않은 함수라고 나올것이다.
a();
a=function(){
console.log('a');
};
변수 -
var a = 'a';
(function(){
console.log(a); //--->print 'undefined'
var a = 'b';
}());
console.log(a); //---> print 'a'
::: 특이한점은 b 가 아닌 a가 출력된다. js 변수 할당은 함수단위의 변수이므로 함수내에서 선언된 변수는 global 변수에 영향을 미치지 않는다. 함수내 var a는 함수를 빠져나오면서 소멸(?)된다.
하지만 var 없이 a='b' 하게된다면 a가 아닌 b가 출력될것이다.
===> 실제 컴파일된 모습은 아래와 같다
var a='a';
(function(){
var a='undefined';
console.log(a);
a = 'b';
}());
console.log(a);
'컴터 > Javascript / html' 카테고리의 다른 글
대부분 브라우저 호환되는 클립보드에 텍스트 복사하기 + 출처표기 (0) | 2016.05.24 |
---|---|
좌우로 슬라이드(vertical slide) (0) | 2014.10.10 |
[자바스크립트]본문내 실제 이미지 크기가 설정값 이상이면 레이어로 크게 보기 (0) | 2011.02.24 |
a 태그에 이미지 백그라운드로 나오게할때 ie만나오고 firefox등에선 안나올때 (1) | 2009.02.11 |
- Total
- 1,769,491
- Today
- 8
- Yesterday
- 15
- Adobe AIR / www.AS3.kr / Actio…
- Adobe AIR Devpia.
- Beyond Tomorrow
- Blog of Shigeru Nakagaki. Let\…
- CSS3 . Info
- Code Weblog
- CodeIgniter 한국사용자포럼 BETA
- ECONOBLOG
- FlexComponent-플렉스 네이버 카페
- Guru's Blog
- Hooney.net - CSS Reference Sit…
- Korean Healthlog
- Raymond.CC Blog
- [Air]AIR_IN_ACTION
- [CSS]후니넷
- [Flex] css 스킨
- [JavaFx] 한글화
- [basic4ppc]괜찮은 사이트
- [flex2책저자]with okgosu (-..-)a
- [flex] stylesheet
- [flex] 예제 많은곳-EBook관련
- [flex]ungsung' study
- [html5-canvas]『 zeroone 』blog
- [html5-iphone]xguru.net
- [html5]korea html5 group
- [html5]sencha touch demos - fr…
- [iPhone]아이군의 블로그
- [iphone] 토리의 놀이터
- [iphone]LambertPark
- [iphone]safari 레퍼런스
- [iphone]피의복수
- [jQuery Plugin] 포토갤러리
- [jQuery] -- jQuery
- [jQuery] 1.1.2 API Browser
- [jQuery] IBM 사이트 설명
- [jQuery] 예제 많음
- [javascript]JKwang's Programs
- [red5]
- [그래픽js] 끝내줌.ㅋ
- [김프]무료 이미지 관리툴 -비교대상 포토샵
- [무료캡쳐프로그램] jing Project - swf …
- [무료호스팅]1.5Gb 줌
- [서프라이즈] - 대문
- [실버라이트] msdn
- [실버라이트]ONESTONE
- [실버라이트]ZZANGMYON BLOG♡
- [실버라이트]사진속에 혼을 담는 개발자
- [실버라이트]유령회사 공도소프트
- [실버라이트]이과장의 프로그래밍이야기
- [오픈소스검색엔진]루씬 한글분석기 오픈소스 프로젝트
- [해킨토시]x86osx.com
- adobe 예제 사이트
- d-|-b First Of May
- lovesera.com: ART of VIRTUE
- rollin96님의 노트-air/flex Tip
- w3school.com
- 굿네이버스
- 꿀뷰, 바닥, 술집의 개발자
- 나물이네-자취생들의 먹거리 해결..ㅋ
- 낙장불입 인생막장
- 내 눈으로 본 한국, 한국인....
- 딴동네-Air/Flex 영상 강좌
- 레인 에디터
- 류종택의 프로그래밍 강의실
- 리아 코리아
- 무료 호스팅 해줌 - 디지문
- 버터백통의 Action Script 레시피
- 살아 숨 쉬는 웹 - 블루비
- 색깔있는 진보 칼라TV
- 시작하세요! iphone3
- 아이디어 상품
- 아폴로케이션[Adobe AIR]
- 엑셀 도움말
- 영원의 헤아림-검쉰-Flex
- 오픈소스 FLV 플레이어
- 울나라 Ajax Library
- 웹사이트 방문자 통계
- 웹카페-css 잘나왔뜸
- 웹캠으로하는 멋진 게임
- 웹프로그래머의 홈페이지 정보 블로그
- 윤훈남의 액션스크립트3.0
- 조인시 위키
- 체리필터의 인생이야기
- 충청투데이 알짜 뉴스
- 칸과칸사이
- 태우\'s log - web 2.0 and beyond
- 파비콘 제네레이터
- 파인애플 밴드
- 팬소년이야기
- 한국의 대표 진보언론 민중의소리 - 전체 기사
- 훈스닷컴
- Feeding.kr의 일용할양식
- [javascript]기억하고 싶은 것들
- XML-RPC-metaWeblog 설명
- [IT웹툰]미닉스의 작은 이야기들
- outsider 개발자
- 애매한 발음 알아볼때
- [android]Photographer. Android…
- [android]mSurf Lab 안드로이드 개발 정보…
- [android]안드로이드 개발 정보
- [android]안드로이드 개발하는놈
- [android]안드로이드 프로그래밍 정복
- [android]참 쉽습니까?
- [android]커니의 안드로이드 이야기 - Andro…
- [android]회색의 구글 안드로이드 개발
- 장군블로그 [진심을 담는 마크업. 웹 표준. 웹 접근성…
- 백남중
- NARADESIGN:BLOG
- [php.js] php함수 js로 옮겨놓은 곳
- javascript 이론적으로 설명잘해놓은곳
- JavaScript Garden
- Angularjs 등 javascript 설명
- node.js
- 유용한 코드 많은 곳...코드쪼가리?
- HTML5 Demos- 최고!!!
- Firejune - The Web is still ch…
- 글읽어주는 사이트
- [publisher] Clearboth
- [nodejs]Hello World!!
- angularjs2 - 강추
- 모든 브라우저에서 동작하는 canvas
- Beautiful Jquery Plugin MopTip…
- 김진형교수의 SW정책 단상
- Comments for 미스타표, 즐기며 배우며.
- [외국개발자]곰같은블로그
- [opencv]다크 프로그래머
- [YouTube]日本人の知らない日本語
- 영어학습 자료실 EnglishCube - 추천사이트, …
- がんばれ! 日本語
- [youtube]serina hwang
- 하라마~~~
- O HOUSE : 라이프 매거진
- 아름다운 하우스 : 네이버 블로그
- [인테리어]김반장의 이중생활
- [리모델링]Pastel design & Archi te…
- [리모델링]대전 아파트 인테리어 전문 업체! 엘림하우스
- [리모델링]가람홈스토리
- :: Back to the Mac
- Swift 언어 개발문서
- [swift]Seorenn SIGSEGV
- Swift Lab를 위한 댓글
- 콩닥맘의 차니스토리 : 네이버 블로그
- 헬렌의 테이스팅 메뉴 The Tasting Menu
- lovesera: ART of VIRTUE-정진호
- [ionic] saltfactory's blog
- PhoneGap API Documentation
- 김변의 법인등기 : 네이버 블로그
- 면어의 얼렁뚱땅 캘리그라피
- 푸른지성과 카즈미, 그리고 코타의 행복한 세상!
- AnimationKING
- AnimationKING : 네이버 블로그
- POND X P.B.Y
- 도쿄 동경 베쯔니 블로그
- whatdo.net-티티호스팅
- 해킨토시
- Alert.show
- 고려극장
- 가오지구
- 대전역
- jQuery
- 티눈
- 공개
- exif 정보
- 골목
- 자양동
- flex
- php
- 자전거
- 맥북에어 13
- 겨울준비
- 안드로이드
- html5
- html5예제
- 쌍둥이빌딩
- Ajax
- 사마귀
- AIR
- 넥서스원
- 충청투데이
- 봄
- localstorage
- 재개발
- ogv
- 아이폰