본문 바로가기

Development/Javascript

3장 언어의 기초

    1.     문법

      1.1 대소문자 구분

        - 변수나 함수이름, 연산자 모두 대소문자를 구분함

      1.2   식별자

        - 첫번째 문자는 반드시 글자나 밑줄(_), 달러기호($) 중 하나여야 함

        - 다른 문자에는 글자나 밑줄, 달러기호, 숫자를 자유롭게 쓸 수 있습니다.

        - ECMAScript 식별자는 관습적으로 카멜케이스를 사용(카멜 케이스란 첫번째 글자는 소문자로 단어가 바뀌는 첫번째 글자는 대문자로 표기하는 방식) : firstSecond, getProperty, setProperty

      1.3 주석

        - // 한줄 주석

        - /*

            * 블럭 주소 형식

            * 이런 식으로 사용함

            */

      1.4 스트릭트 모드

        - ECMAScript 5판에서 도입함

        - "use strict"; 라고 명시하여 사용

        - 전체 스크립트에 적용을 하려면 맨 위에 작성

        - 함수 단 하나만 사용하려면 함수 본문 맨 앞에 작성

          예) function doSomething() {

                  "use strict";

                  // 함수 본문

               }

        - 인터넷 익스플로러10+, 파이어폭스 4+, 사파리5.1+, 오페라 12+, 크롬등에서 지원

      1.5   문장

        - 문장의 끝은 세미콜론으로 종료

        - 코드 블록은 여는 중괄호({)로 시작해서 닫는 중괄호(})로 종료

    2.     키워드와 예약어

        - 키워드나 예약어는 식별자나 프로퍼티,함수등의 이름에 사용할 수 없음

        - break, do, if, else, try, catch, with, while, ... 기본적인 프로그래밍 언어에서 사용하는 명령어 키워드

        - abstract, enum, public, private, protected, int, long, ... 아직은 특별한 쓰임새가 없지만 미래에 키워드로 

          사용할 가능성이 있는 예약어

         - 일반 모드에서 사용하는 예약어 : class, enum, extends, super, const, export, import

        - 스트릭 모드에서 사용하는 예약어 : implements, package, public, interface, private, static, let,  protected, yield

    3.     변수

        - ECMAScript는 느슨한 변수 타입을 사용(이는 변수에 어떤 타입의 데이터라도 저장이 가능하다는 의미임)

        - 변수를 정의 할때는 변수명 앞에 var를 사용

        - 변수를 초기화 하지 않으면 undefined가 할당 됨

        - 스트릭 모드에서는 변수를 선언하지 않고 값을 할당하면 ReferenceError에러를 반환함

    4.     데이터 타입

      4.1 typeof 연산자

        - 변수의 데이터 타입을 알고자 할때 사용

        - 정의되지 않은 변수 : undefine

        - 불리언 : boolean

        - 문자열 : string

        - 숫자 : number

        - 함수를 제외한 객체 또는 null : object

        - 함수 : function

      4.2 undefine 타입

        - 변수를 정의 했지만 초기화를 하지 않은 경우의 데아터 타입

        - 빈 객체와 구분을 위해 변수를 undefine으로 초기화 하지 않아야 함

      4.3 null 타입

        - 빈 객체를 가르키는 포인터 타입

        - 변수를 정의할 때 해당 변수가 객체를 가르키게 하기 위해서는 null로 초기화 하길 권장함

        - undefine은 null에서 파생되었기에 ECMA-262에서는 두 값이 표면적으로는 동일한 것으로 정의함

      4.4 불리언 타입

        - true와 false 두개의 리터럴을 가지는 가장 많이 사용되는 데이터 타입

        - Boolean()함수를 사용하여 모든 데이터 타입을 불리언 값으로 표현이 가능함

      4.5 숫자타입

        - 가장 기본적인 숫자 리터럴 형식은 10진법임

        - 8진수 리터럴 표현은 첫번째 숫자가 반드시 0이어야 하며 그 뒤에 0부터 7의 숫자를 사용함

        - 16진수 리터럴 표현은 첫 두문자에 반드시 0x를 쓰고 그 뒤에 0-9, A-F를 사용함

        - 부동 소수점 숫자를 표현하려면 반드시 소수점이 있어야 함

        - 굉장히 크거나 작은 부동소수점은 'e-표기법(지수 표기법)'을 사용함

        - ECMAScript는 소수점 뒤에 0이 6개 이상 있는 모든 부동 소수점 숫자는 지수 표기법으로 변환함

        - ECMAScript로 표현할 수 있는 최소값은 Number객체의 MIN_VALUE 프로퍼티에 저장되고 값은 5e-324입니다. 마찬가지로 최대값은 MAX_VALUE 프로퍼티에 저장되며 값은 1.7976931348623157e+308 임

        - 숫자형 범위에서 나타낼 수 없는 숫자라면 해당 값은 자동으로 특별한 값인 Infinity로 변환됨(isFinite함수를 제공하여 숫자의 유효한 범위를 검사 함)

        - 숫자형 값 중에는 NaN(Not a Number)이란 특별한 값이 있는데 이는 숫자를 반환할 것으로 의도한 조작이 실해했을 때 반환하는 값(isNaN이란 함수를 제공하여 검사 함)

        - 숫자가 아닌 값을 숫자로 바꾸는 함수는 Number(), parseInt(), parseFloat() 세가지를 제공 함

      4.6 문자열 타입

        - 문자열은 큰따옴표(")나 작은따옴표(')로 감싸서 표현 함

        - 문자리터럴

        - 값을 문자열로 바꾸는 방법은 toString()메서드와 String()함수 두가지가 있음

      4.7 객체타입

        - ECMAScript에서 객체는 데이터와 기능의 집합으로 new 연산자를 사용하여 만든

        - Object의 인스턴스는 다음의 프로퍼티와 메서드를 가짐

          . constructor : 해당 객체를 만드는 데 사용하는 함수. Object() 함수가 생성자

          . hasOwnProperty( propertyName ) : 해당 프로퍼티가 객체 인스턴스에 존재하는지 확인함

          . isPrototypeOf(object) : 해당 객체가 다른 객체의 프로토타입인지 확인함

          . propertyIsEnumerable(  propertyName ) : 해당 프로퍼티를 for-in 문에서 나열할 수 있는지 확인함

          . toLocaleString() : 객체를 지역에 맞게 표현한 문자열을 반환

          . toString() : 객체를 문자열로 변환해 반환

          . valueOf() : 객체를 나타내는 문자열이나 숫자, 불리언을 반환

    5. 연산자

      5.1 단항 연산자

        - 단 하나의 값에만 적용되는 연산자

        - 증감 연산자 : a++, --a

      5.2 비트 연산자

        - ECMAScript에서 모든 숫자는 IEEE-754 64비트 형식으로 저장되지만 비트 연산자는 64비트 표현을 직접 조작하지 않고, 값을 32비트 정수로 변환하여 비트 연산자를 적용한 후 결과를 다시 64비트로 바꿈

        - 비트 NOT : 틸테(~)로 나타내며 단순히 피연산자의 1의 보수를 반환

        - 비트 AND : 앰퍼샌드(&)로 나타내며 두개의 비트가 1인 경우에만 1을 반환

        - 비트 OR : 파이프(|)로 나타내며 두개중 하나라도 1이면 1을 반환

        - 비트 XOR : 캐럿(^)으로 나타내며 두 비트 중 하나만 1일때 1을 반환

        - 왼쪽 시프트 : <<로 나타내며 좌항의 모든 비트를 우항의 숫자 만큼 비트를 이동

        - 부호 있는 오른쪽 시프트 : >>로 나타내며 모든 비트를 오른쪽으로 우항의 숫자만큼 이동하되 부호비트는 그대로 유지

        - 부호 없는 오른쪽 시프트 : >>>로 나타내며 모든 비트를 오른쪽으로 우항의 숫자만큼 이동

      5.3 불리언 연산자

        - 논리 NOT : 느낌표(!)로 표시하며 주어진 값의 반대되는 불리언 값을 반환

        - 논리 AND : 앰퍼샌드 2개(&&)로 표시하며 두 개의 값이 true일 경우 true값을 반환

        - 논리 OR : 파이프 2개(||)로 표시하며 두 개중 하나라도 true이면 true값을 반환

      5.4 곱셈 연산자

        - 곱셈 : 아스테리크(*)를 써서 표시함

        - 나숫셈 : 슬래시(/)를 써서 표시함

        - 나머지 : 퍼센트(%)를 써서 표시함

      5.5 덧셈 연산자

        - 덧셈 : (+)를 써서 표시함

        - 뺄셈 : (-)를 써서 표시함

      5.6 관계 연산자

        - 미만(<), 초과(>), 이하(<=), 이상(>=)의 연산자가 있음

      5.7 동일 연산자

        - 동일(==), 비동일(!=), 일치(===), 불일치(!==)의 연산자가 있음

        - 동일/비동일 연산자는 타입 변환을 통해 값이 일치 할 수 있는 관계를 표시

        - 일치/불일치 연산자는 값과 타입이 모두 일치하는 관계를 표시

        - 동일/비동일 연산자를 쓰면 타입 변환때문에 자주 문제가 발생하므로 대신 일치/불일치 연산자를 쓰기를 권장함. 일치/불일치 연산자를 쓰면 코드 전반에서 데이터 타입을 관리하기 쉬워짐.

    6. 문장

      6.1 if문

        - 조건 제어문

        - if (condition) 

            statement1;

          else

            statement2;

      6.2 do-while문

        - 평가 전 루프문(평가 전 반복문)

        - do {

            statement

          } while(expression);

      6.3 while문

        - 평가 후 루프문(평가 후 반복문)

        - while(expression) {

            statement;

          }

      6.4 for문

        - 평가 후 루프문(루프에 들어가기 전에 변수를 초기화 할수 있음)

        - for(initialization; expression; post-loop-expression)

            statement;

        - for(;;) {        // 무한 루프

            doSomething();

          }

      6.5 for-in문

        - 엄격한 반봅문(객체의 프로퍼티를 나열하는 데 사용)

        - for(property in expression) statement;

      6.6 문장 레이블

        - break나 continue문에서 참조를 위한 문장(또는 블럭)의 위치명

        - label : statement

      6.7 break문과 continue문

        - break문은 즉시 루프에서 빠져나가 루프 다음문장을 실행

        - continue문은 루프를 즉시 빠져나가긴 하지만 루프 실행을 계속 됨

      6.8 with문

        - 코드의 스코프를 특정 객체에 고정

        - with(expression) statement;

        - 스트릭트 모드에서는 with문을 금지하며 문법 에러로 간주함.

      6.9 switch문

        - 표현식이 value와 일치하면 해당 statement를 실행

        - switch(expression) {

            case value: statement;

              break;

            case value: statement;

              break;

            case value: statement;

              break;

            default: statement

          }

    7. 함수

      - 문장을 캡슐화하여 어디서든, 언제든 실행할 수 있게 하는 모든 언어의 핵심

      - ECMAScript에서 함수는 function 키워드로 정의하며 그 뒤에 매개변수와 함수 본문을 순서대로 작성

    function functionName(arg0, arg1, ..., argN) {

    statements

    }

      - 함수는 항상 값을 반환하거나 항상 반환하지 않게 만들기를 권장함

      - 스트릭트 모드에서의 제한

        . 함수 이름에 eval이나 arguments는 사용할 수 없음

        . 매개변수 이름에도 eval이나 arguments는 사용할 수 없음

        . 서로 다른 매개변수에 결코 같은 이름을 쓸수 없음

      - ECMAScript함수에는 오버로딩이 없음




'Development > Javascript' 카테고리의 다른 글

2장 HTML 속의 자바스크립트  (0) 2014.03.25
1장 자바스크립트란 무엇인가?  (0) 2014.03.25