본문 바로가기

개발/javascript

자바스크립트만의 특징 몇가지 (ft. 호이스팅) + 예시 퀴즈

1. 인터프리터 언어이다.

     자바 → 바이트코드 처럼, C → 실행파일 처럼 컴파일 과정을 거치는 컴파일 언어와 다르다.

     자바스크립트 Parser가 코드들을 파싱하면서 해석하고 실행시킨다.

     각 브라우저마다 자신의 엔진이 있는데 (ex. 크롬 V8)

     각자가 해석하는 결과물의 특징이 조금씩 다르다. 그래서 빡친다.

 

2. 함수 기반 언어이다.

     자바는 클래스의 개념이 없다. 함수를 사용해서 유사하게 구현할 수 있다.

 

3. true, false 개념이 특별하다.

     NaN, 0, ''(빈 문자열), undefined, null, false 이 6가지를 제외한 모든 것들이 true이다.

     "고군분투", 1234 등등 모든 것이 true이다.

      +Q. '0' 은 true일까 false일까?? 

더보기

정답은 true이다. 빈 문자열이 아니라서!

 

     +Q. console.log( 0 && 1 ) ; 의 반환값은?

더보기

정답은 0 이다. 나는 false인줄 알았는데, 있는 그대로의 false형태( 숫자 0 )를 반환한다.

 

     여기서 예시로 나온 &&, || 를 조금 다음에 조금 더 구체적으로 다룰 것이다.

 

4. 실행하면 "호이스팅"을 진행한다.

호잇쨔 날라가보자

     사전적 의미는 이렇다. 호이스팅, 호잇쨔 올라가보즈아! 영단어 그대로 느낌이 온다.

     자바스크립트는 실행을 누르면,

     자바스크립트 Parser는 { var, function 선언문 } 이 두가지를 가장 위로 끌어올린다.

     (해석을 가장 먼저 한다는 것이지, 당연히 코드를 맨위로 자리이동시킨다는 것은 아니다!)

     예시를 하나 들겠다 :

func() ;
var func = function () {
	console.log(1) ;
} ;
func() ;
function func() {
	console.log(2) ;
}
func() ;

     출력 값은 어떻게 될까?

더보기

정답 :

2
1
1

     꽤나 뜻밖이지 않은가????

     호이스팅이 진행된 후 순서를 알면 알 수 있다.

     호이스팅 순서는 그렇다면 어떻게 될까? 이 것도 많이들 틀릴 것이다 후후..

더보기

정답 :

var func ; 

function func() { console.log(2) ; }

func() ; // 2

func = function () { console.log(1) ; } ;

func() ; // 1

func() ; // 1

    그래서 순서가 2 1 1 이 되는 것이다.

    나도 예측이 다 틀려서 자바스크립트 그래도 1년정도 개발한 사람으로써 매우매우 부끄러웠다.

 

 

 

자바스크립트... 좋은 놈인줄 알았는데...

꽤나 괘팍한 놈이었다...

많은 공부를 필요로 하는 놈이구나 ㅠ

반응형