Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 자바스크립트 문법
- 자바스크립트 유효범위
- Safari
- 의미있는 이름
- 자바스크립트 배열
- 리팩토링
- 자바스크립트
- 정규표현식
- 네이밍
- 자바스크립트 메소드
- 리팩토링 기법
- 리팩토링이란
- 자바스크립트 정규식
- 자바스크립트 상속
- 프로토타입
- 클로저
- 정규식
- mysql #mysql최적화 #최적화
- 리팩토링기법
- 자바스크립트 모듈
- 클린코드
- 모듈
- 콜백
- 자바스크립트 클로저
- 자바스크립트 함수
- 자바스크립트 콜백
- 자바스크립트 정규표현식
- 변수명
- 프로토타입 상속
- 자바스크립트 객체
Archives
- Today
- Total
개발정리
Chapter9, 부록 본문
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 나쁘지만 사용해야 하는 부분들
- 전역변수
- 프로그램이 커짐에 따라 관리하기 힘들다.
- 하위 프로그램에서 서로 방해하고 오류를 발생시킬 수 있다.
- NO링커 (?)
- 따라서 모든 컴파일 단위에서 하나의 전역변수만을 사용하는 것이 좋다.
- 전역 변수를 선언하는 3가지 방법
- 어느 함수에도 속하지않는 var문
- 전역 객체에 삽입
- window객체
- 변수 선언없이 사용
- 유효범위
- 자바스크립트에는 블록 유효범위가 없다.
- 따라서 함수의 첫 부분에 변수를 선언해주는 것이 바람직하다.
- 세미콜론 삽입
- 세미콜론이 자동으로 삽입되지만 너무 믿어서는 안된다.
return문에서 이사한 결과를 얻을 수 있다.
- 세미콜론이 자동으로 삽입되지만 너무 믿어서는 안된다.
- 예약어
- 많은 예약어는 자바스크립트에서 사용하지 않는다.
- 사용하고 싶다면 따옴표로 묶어 사용한다.
- 마침표 표기법으로는 사용하지 못한다.
- 대괄호 표기법을 사용해야 한다.
- 유니코드
- 16비트
- 65,536자
- typeof
- 피연산자의 타입을 알 수 있다.
- 잘못된 점
- typeof null === 'object'
- typeof NaN === 'number'
- 정규표현식은 환경에 따라 다르게 반환
- parseInt
- 문자형 → 숫자
- 변환 중 문자를 만나면 break
- 따라서 '16'과 '16abc'는 같은 값을 반환한다.
- 첫 번째 문자가 0이면 8진수로 간주한다.
- parseInt('08')과 parseInt('09')는 0을 반환한다.
- 둘 다 8진수 상에서는 존재하지 않는 숫자이기 때문이다.
- 정상적인 출력을 위해선 parseInt('08', 10)로 추가 인자값을 지정한다.
- parseInt('08')과 parseInt('09')는 0을 반환한다.
- +
- 덧셈을 하거나 문자열을 연결
- 피연산자의 데이터에 따라 결정된다.
- 덧셈 연산 시 피연산자가 모두 숫자인지 확인하는걸 권고
- 덧셈을 하거나 문자열을 연결
- 부동 소숫점
- 소수 부분을 제대로 처리하지 못한다.
- IEEE(754)을 채택한 고의적인 결과
- 소숫점 계산 시 정수형으로 변환 후 다시 소수로 만든다.
- NaN
- 숫자가 아님을 나타낸다.
- typeof연산자는 NaN과 숫자를 구분하지 못한다.
- 따라서 isNaN(value)를 사용한다.
- isFinite함수는 NaN과 Infinity를 거부하기 때문에 숫자를 확인하는데 가장 좋은 방법이다.
하지만 인수로 넘어온 값을 숫자로 변환하려한다
따라서 하나의 함수 정의도 좋은 방법이다
- 가짜배열
- 자바스크립트는 진정한 배열이 없다.
- 하지만 비슷한 배열은 있다.
- 성능은 진짜 배열보다 아주 나쁘다.
- typeof는 배열과 객체를 구분하지 못한다.
따라서 구분하기 위해 constructor 속성을 체크
다른 창이나 프레임에서 만들어진 값이라면
- arguments는 배열이 아니다.
- 하지만 length는 가지고 있다.
- 따라서 위 방법에선 arguments를 배열로 처리한다.
거짓인 값들
- 값형비고값형비고
0 숫자 거짓 NaN 숫자 거짓 '' 문자열 거짓 false 불리언 거짓 null object 거짓 undefined undefined 거짓 - 모두 거짓이지만 서로의 값을 맞바꿀 수 없다.
- undefined와 NaN은 상수가 아닌 전역변수.
- 따라서 값 변경이 가능하다.
- 따라서 값 변경이 가능하다.
- hasOwnProperty
- for in 문제를 해결.
- 객체 탐색 시 필터역할을 한다.
- 메소드기 때문에 오버라이딩 될 수 있다. 주의 필요
- 객체
- 모든 프로토 타입의 값을 가지고 있다.
- 모든 속성을 열거나 처리 시 프로토 타입 객체의 속성도 가져오게 된다.
- 이를 방지하기 위해 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