본문 바로가기
Programming

[자바스크립트 스터디] 자바스크립트 완벽 가이드 1부 2장 어휘구조

by ◁ 2018. 6. 1.
반응형

자바스크립트1부2장어휘구조



첫 시간입니다. 


이 포스팅을 하는 목적을 바로 전 포스팅에서 얘기했는데요.. 뭔가 너무 홧김에 저지른 것 같은 늬앙스여서 좀 부끄럽습니다. 


모든 직업이 다 그렇지만 특히 개발자는 평생 공부를 해야 하는 직업이라고 하달까요? 조금만 자기 관리에 소원하면 더 큰 성장을 못하기에 저 자신을 채찍질 하기 위해 이렇게 블로그에 포스팅을 합니다. 


첫 단추를 제대로 꿰 봐야 하겠지요. 


이 포스팅은 자바스크립트 완벽 가이드를 참고하여 포스팅을 합니다. 

작성자는 엄청난 지식을 가진 것이 아닌 공부의 차원으로 포스팅을 하는 것이니 부족한 내용이 있더라도 양해 부탁드립니다.



1부 2장 목차

2.1

문자 집합

2.2

주석

2.3

리터럴

2.4

식별자와 예약어

2.5

선택적인 세미콜론 사용


첫번째 포스팅인 만큼 가볍게 진행해보겠습니다. 


프로그래밍 지식이 조금이라도 있는 분들이라면 목차만 봐도 대충은 이해하셨을 겁니다. 

실제로 코딩을 하다보면 자연스럽게 알게 되는 부분이기도 하고 목차 중 몇가지는 제대로 모른다고 해도 개발을 할 땐 딱히 상관없습니다. (!!! 제 생각이에요!!)


2.1 문자집합

여러분은 아스키(ASCII) 코드나 유니코드(Unicode)란 말을 들어보셨나요?
문자집합을 나타내는 개념인데 아스키코드는 (American Standard Code for Information Interchange) 약자로서 PC가 알아들을 수 있는 0, 1을 조합하여 영어의 알파벳과 일부 특수문자를 표현하기 위한 문자체계입니다. 총 128가지의 문자를 나타낼 수 있구요. 7비트로 이루어져 있답니다. 여기에 1비트를 추가한 확장 아스키코드는 256자를 표현할 수 있다고 하죠. (네이버 검색해보심 빠릅니다. )

하지만 알파벳과 일부 특수문자만 가능할 뿐, 다른 나라의 언어까지 표현하기에는 필요한 데이터의 양이 부족했습니다. 

이럴때 등장한 것이 바로 유니코드 입니다. 유니코드는 영어를 제외한 나라의 언어를 표현하기 위해 고안된 문자체계이구요. 언어와 상관없이 모든 문자를 16비트 즉, 2바이트로 65536자를 표현할 수 있습니다.

자바스크립트는 이 유니코드 문자 집합을 사용하여 작성되는 언어입니다. 

그렇기 때문에 코드를 작성할때 실제 문자와 유니코드를 조합하여 프로그래밍도 가능합니다. 하지만 추천은 하지 않습니다.(\u000A, \u000D가 뭐게요~)


2.2 주석

브라우저는 자바스크립트를 주석은 제외하고 해석을 합니다. 그리고 자바스크립트에선 2가지 방법으로 주석을 표현합니다. 

    // 한 줄 주석을 표현합니다.

    /*
      범위 주석을 표현합니다.
    */

위와 같은 것들입니다.


그렇다면 왜 주석을 사용할까요?

웹 개발을 하면서 신내림을 받은 것처럼 코딩을 쫙쫙 될때가 더러 있습니다. 그럴때 신나가지고 엄청나게 개발을 하게 되죠. 
그런데 한참 뒤에 기획이 수정되어 개발코드를 수정해야 할 때가 있습니다. 어제 짠 코드도 오늘보면 새롭습니다. 하물며 몇 개월이나 지난 것은 말할 필요도 없죠.

이때 필요한 것이 주석입니다.

주석이란 사전적 의미로는 " 낱말이나 문장의 뜻을 쉽게 풀이함. 또는 그런 글. " 이라고 정의되어 있습니다. 
자바스크립트에서도 주석은 크게 다르지 않습니다. 즉 주석은 본인이 작성한 코드의 설명을 남기는 행위입니다. 이 메서드가 어떤 역할을 하는 것인지 어떤 파라미터를 필요로 하는지 등을 적어 추후에 수정해야할 때나 또는 이직으로 인한 인수인계를 해야할 때 필요합니다. 

"에잇 귀찮아" 라며 안해도 자신의 결정입니다만 조금의 귀찮음을 이겨내고 그때그때 작성해 두면 더 귀찮은 일을 예방할 수 있습니다.

2.3 리터럴

책에 의하면 리터럴이란 
리터럴(literal)은 프로그램에 직접 나타나는 데이터 값이다. - p.28

이라고 정의되어 있습니다. 근데 너무 난해한건 제가 모자라서 인가요? 저 문장으로 리터럴을 제대로 표현하지 못하는 거 같아 검색해 보았습니다. 
네이버 지식백과에서는 리터럴에 대해서 좀더 직관적인 문장으로 나타냈는데요
프로그램언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X=‘90’에서 문자열 90은 90이라는 값을 나타내는 리터럴이다.

즉 그 자체로 값을 나타내는 문장이라고 생각하면 편할 것 같습니다. 
예제를 한번 보고 넘어 가시죠

    12                    // 숫자 12
    1.2                   // 숫자 1.2
    "hello world"     // 문자열
    'hi'                   // 다른 문자열
    true                 // 불리언 값
    false                // 다른 불리언 값
    /javascript/gi   // '정규표현식' 리터럴 (패턴 매칭용)
    null                 // 객체가 존재하지 않음
    
    /* 더 복잡한 표현 */
    { x: 1, y: 2 }       // 객체 초기자
    [1, 2, 3, 4, 5]       // 배열 초기자


2.4 식별자와 예약어

식별자와 예약어는 개념만 알아도 충분합니다. 
식별자는 명칭입니다.(이름이라고도 하지요) 자바스크립트에서 변수명이나 메서드명을 정할 때 사용하는 개념인데 몇가지 주의사항이 있습니다. 

1. 식별자의 시작은 알파벳, 밑줄( _ ), 혹은 달러( $ ) 표시여야 한다.
2. 식별자는 숫자로 시작할 수 없다.
3. 공백문자는 포함할 수 없다.
4. 예약어는 사용할 수 없다. 

등등이 있습니다. 

예약어는 무엇일까요? 
자바스크립트의 명세를 정하는 ECMA는 추후 사용 가능성이 있는 단어를 예약어로 지정하여 미리 선점해 놓았습니다. 개발을 좀 하다보면 뭐가 예약어일지 감이 잡히실 겁니다. 그게 아니더라도 요즘엔 에디터의 기능이 좋아서 예약어를 변수명으로 사용하면 바로 오류표시를 나타내니 예약어에 대해선 크게 신경쓰지 않아도 될 것 같습니다. 

2.5 선택적인 세미콜론 사용

전달하고자 하는 의미는 딱 하나입니다. 

왠만하면 세미콜론 ( ; ) 을 사용하자. 


자바스크립트도 해석되는 문장을 구분하기 위해 세미콜론을 사용합니다. 그렇지만 세미콜론을 사용하지 않더라도 자바스크립트는 유연한 언어이기 때문에 줄바꿈 코드가 있다면 세미콜론을 자동으로 판단하여 넣어줍니다. 


    var a
    a
    =
    3
    console.log(a)

위 경우는 var a; a = 3; console.log(a); 로 해석합니다.


자바스크립트는 var a 다음에 a 가 오는것이 해석이 되지 않기 때문에 var a; 로 문장을 끝내버리는 것이죠. 



    var y = x + y
    (a + b).toString()

위 경우는 var y = x + y(a + b).toString();로 해석합니다.


위 경우는 개발자의 의도와 다른 해석일 수 있습니다. 개발자는 var y = x + y; (a + b).toString(); 을 바랬을 수도 있죠.

이렇듯 세미콜론을 제대로 써주지 않는다면 개발자의 의도와 다른 해석이 될 수 있기 때문에 왠만하면 문장의 끝엔 세미콜론을 넣어주는게 상식입니다. (개발자에 따라 문장 첫 시작에 세미콜론을 넣어주는 경우도 있습니다.)


이처럼 해석이 되지 않을 때 줄 바꿈을 보고 세미콜론으로 해석하는 일반적인 경우의 예외사항이 있습니다. 

바로 return, break, continue 인데요. 



    return
    true;

위 경우는 return; true; 로 해석됩니다. 여러분은 return true; 를 원했겠지만 말입니다.


글을 길게 작성하였지만 결국은 처음에 얘기했던 대로 왠만하면 세미콜론을 넣어주자. 가 답인것 같네요.




다음주제는 1부 3장 타입, 값, 변수 입니다.

반응형

댓글