개발정리

Chapter9, 부록 본문

JS/javascript

Chapter9, 부록

성구님 2017. 4. 9. 13:39
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Chapter 09 스타일

Chapter 10 아름다운 속성에 대한 단상

부록 A 나쁘지만 사용해야 하는 부분들

 

 

Chapter 09 스타일

  • 프로그램을 잘 표현하면 이를 명확히 이해할 수 있고 그로인해 변경이나 오류를 성공적으로 수정할 수 있다.
  • JS 최악의 속성은 피하자
  • 들여쓰기는 4칸
  • if 와 '(' 사이에는 한 칸을 띄워 메소드나 함수와 차별을 둔다.
    • 함수는 붙여서 쓴다.
  • 세미콜론은 꼭 붙여주도록 한다.
  • 문자열은 최대한 한 줄에 한 문장으로 작성한다.
  • if, while, for등 블록을 무조건 지정해준다.
  • K&R스타일
    • 블록 { 을 문장의 마지막에 (return문 등...)
    • 한 줄 띄지 않는다.
  • 주석은 최신 내용에 맞춰 수정한다.
    • 한 줄짜리 주석을 사용한다
  • 주석없이 프로그램을 구조화 하는 것도 좋은 방법이다.
  • 자바스크립트에서는 모든 변수는 최상단에 선언한다.
    • 사용하기 전 선언하지 않는다.
  • 실수같은 코드를 작성하지 마라.
    • if (a=b) 등 ...
  • switch문을 사용할 때는 break는 필수.
    • fall through
  • 라이브러리를 포함하는 하나의 전역변수를 사용한다.
  • 클로저는 정보은닉과 모듈화를 강력하게 해준다.

 

 

Chapter 10 아름다운 속성에 대한 단상

  •  자바스크립트의 좋은 점
    • 일급 객체인 함수
      • 단순화된 자바스크립트에서 함수는 어휘적 유효범위를 갖는 람다이다.
    • 프로토 타입으로 상속 하는 동적 객체
      • Class free
      • 할당으로 새로운 구성요소 추가 가능.
      • 객체에서 객체로 상속.
    • 객체 리터럴과 배열 리터럴
      • 편리하다
      • 자바스크립트의 리터럴은 JSON에 많은 영감을 줬다.
  • 예약어 정책은 자바스크립트에선 필요없지만 다른 언어를 공부할 때 많은 도움이 된다.
  • 제품이나 프로그래밍 언러를 설계 할 때 제대로 된 핵심 기능만을 사용하자.

 

부록 A 나쁘지만 사용해야 하는 부분들

  1. 전역변수
    1. 프로그램이 커짐에 따라 관리하기 힘들다.
    2. 하위 프로그램에서 서로 방해하고 오류를 발생시킬 수 있다.
    3. NO링커 (?)
    4. 따라서 모든 컴파일 단위에서 하나의 전역변수만을 사용하는 것이 좋다.
    5. 전역 변수를 선언하는 3가지 방법
      1. 어느 함수에도 속하지않는 var문
      2. 전역 객체에 삽입
        1. window객체
      3. 변수 선언없이 사용
  2. 유효범위
    1. 자바스크립트에는 블록 유효범위가 없다.
    2. 따라서 함수의 첫 부분에 변수를 선언해주는 것이 바람직하다.

  3. 세미콜론 삽입
    1. 세미콜론이 자동으로 삽입되지만 너무 믿어서는 안된다.
      1. return문에서 이사한 결과를 얻을 수 있다.

        return
        {
        //..
        };
          
        return;
        {
        //..
        }
          
        // 위 두 문장은 컴파일 시 동일하게 동작한다.
        // 따라서 다음과 같이 작성한다.
        return {
            //..
        };



  4.  예약어
    1. 많은 예약어는 자바스크립트에서 사용하지 않는다.
    2. 사용하고 싶다면 따옴표로 묶어 사용한다.
      1. 마침표 표기법으로는 사용하지 못한다.
      2. 대괄호 표기법을 사용해야 한다.
  5. 유니코드
    1. 16비트
    2. 65,536자

  6. typeof
    1. 피연산자의 타입을 알 수 있다.
    2. 잘못된 점
    3. typeof null === 'object'
      1. typeof NaN === 'number'
      2. 정규표현식은 환경에 따라 다르게 반환
  7. parseInt
    1. 문자형 → 숫자
    2. 변환 중 문자를 만나면 break
      1. 따라서 '16'과 '16abc'는 같은 값을 반환한다.
    3. 첫 번째 문자가 0이면 8진수로 간주한다.
      1. parseInt('08')과 parseInt('09')는 0을 반환한다.
        1. 둘 다 8진수 상에서는 존재하지 않는 숫자이기 때문이다.
      2. 정상적인 출력을 위해선 parseInt('08', 10)로 추가 인자값을 지정한다.
  8. +
    1. 덧셈을 하거나 문자열을 연결
      1. 피연산자의 데이터에 따라 결정된다.
    2. 덧셈 연산 시 피연산자가 모두 숫자인지 확인하는걸 권고

  9. 부동 소숫점
    1. 소수 부분을 제대로 처리하지 못한다.
    2. IEEE(754)을 채택한 고의적인 결과
    3. 소숫점 계산 시 정수형으로 변환 후 다시 소수로 만든다.

  10. NaN
    1. 숫자가 아님을 나타낸다.
    2. typeof연산자는 NaN과 숫자를 구분하지 못한다.
      1. 따라서 isNaN(value)를 사용한다.
    3. isFinite함수는 NaN과 Infinity를 거부하기 때문에 숫자를 확인하는데 가장 좋은 방법이다.
      1. 하지만 인수로 넘어온 값을 숫자로 변환하려한다

      2. 따라서 하나의 함수 정의도 좋은 방법이다

        var isNumber = function isNumber(value) {
            return typeof value === 'number' && isFinite(value);
        }



  11. 가짜배열
    1. 자바스크립트는 진정한 배열이 없다.
    2. 하지만 비슷한 배열은 있다.
      1. 성능은 진짜 배열보다 아주 나쁘다.
    3. typeof는 배열과 객체를 구분하지 못한다.
      1. 따라서 구분하기 위해 constructor 속성을 체크

        if (my_value && typeof my_value === 'object' && my_value.constructor === Array) {
            //...
        }
      2. 다른 창이나 프레임에서 만들어진 값이라면

        if (my_value && typeof my_value === 'object'
            && typeof my_value.length === 'number'
            && !(my_value.propertyIsEnumerable('length'))) {
            //...
        }
    4. arguments는 배열이 아니다.
      1. 하지만 length는 가지고 있다.
      2. 따라서 위 방법에선 arguments를 배열로 처리한다.
  12. 거짓인 값들

    1. 비고
      비고
      0숫자거짓
      NaN숫자거짓
      ''문자열거짓
      false불리언거짓
      nullobject거짓
      undefinedundefined거짓
    2. 모두 거짓이지만 서로의 값을 맞바꿀 수 없다.
    3. undefined와 NaN은 상수가 아닌 전역변수.
      1. 따라서 값 변경이 가능하다.

  13. hasOwnProperty
    1. for in 문제를 해결.
    2. 객체 탐색 시 필터역할을 한다.
    3. 메소드기 때문에 오버라이딩 될 수 있다. 주의 필요
       
  14.  객체
    1. 모든 프로토 타입의 값을 가지고 있다.
    2. 모든 속성을 열거나 처리 시 프로토 타입 객체의 속성도 가져오게 된다.
      1. 이를 방지하기 위해 hasOwnProperty로 필터


참고문헌

1. 더글라스 크락포드, 김명신  자바스크립트 핵심가이드 javascript The good parts』, 한빛미디어


'JS > javascript' 카테고리의 다른 글

Chapter8 메소드  (0) 2017.04.09
javascript / Chapter7. 정규 표현식  (0) 2017.02.26
javascript / Chapter6. 배열  (0) 2017.02.26
javascript / Chapter5. 상속  (0) 2017.02.26
javascript / Chapter4. 함수 2  (0) 2017.02.08
Comments