인사이드 자바스크립트를 읽고 JavaScript를 이해해보자.
JavaScript라는 프로토타입 기반의 객체지향 언어를 이해해보자.
그전에 프로토타입이 뭔지 이해해보자.
일단 회사 일을 해야하기 때문에 ES5 문법을 기준으로 보자.
🎉 JavaScript의 핵심 개념
객체
기본 데이터 타입인 boolean, number, string
특별한 값인 null, undefined
그 외의 JavaScript의 거의 모든 타입은 객체다.
함수
함수도 객체다. 그것도 일급 객체다.
프로토타입
모든 객체는 숨겨진 링크인 프로토타입을 가진다. ❓
실행 컨텍스트와 클로저
자바스크립트는 자신만의 독특한 과정으로 실행 컨텍스트를 만들고 그 안에서 실행이 이루어진다. ❓
자바스크립트는
클래스를 지원하지는 않지만 객체지향 프로그래밍이 가능하다. (클로저를 사용해서 상속, 캡슐화, 정보은닉 등의 개념 소화 가능)
함수형 프로그래밍이 가능하다. => 높은 수준의 모듈화가 가능하다.
🎉 JavaScript 데이터 타입과 연산자
데이터 타입
- 기본 타입
- 숫자(Number)
- 문자(String)
- 불린값(Boolean)
- undefined
- null
- 참조 타입
- 객체 (Object)
- 배열(Array)
- 함수(Function)
- 정규표현식
- 객체 (Object)
기본 타입
느슨한 타입 체크 언어이다.
var로 변수를 선언하고, var에 어떤 형태의 데이터를 저장하느냐에 따라 변수의 타입이 결정된다.
var numberType = 10; console.log(typeof numberType); // print >> number var stringType = 'single quote, double quote'; console.log(typeof stringType); // print >> string var booleanType = false; console.log(typeof booleanType); // print >> boolean var empty; console.log(typeof empty); // print >> undefined var nullType = null; console.log(typeof nullType); // print >> object
숫자
JavaScript는 모든 숫자를 64비트 부동 소수점 형태로 저장
var num = 5 / 2; console.log(num); // print >> 2.5
문자열
' 혹은 "로 생성
한번 정의된 문자열은 변하지 않는다.
var name = 'yeju'; console.log(name[0], name[2]); // print >> yj name[0] = 'Y'; console.log(name); // print >> yeju // 읽기만 가능하지 수정은 불가능하다.
불린값
- true와 false 값을 가지는 boolean type을 가진다.
null과 undefined
- 모두 '값이 비어있음'을 나타낸다.
- undefined
- 값이 할당되지 않는 변수는 undefined 타입이다.
- 변수 자체의 값도 undefined다.
- 타입이자 값이다.
- null
- 개발자가 명시적으로 값이 비어있음을 나타내는데 사용
- typeof 결과가 object이다.
- null 타입 변수인지 확인시 typeof 말고 ===을 사용해야한다.
참조 타입(객체 타입)
- 위에 설명된 기본 타입 제외한 모든 값은 객체다.
- 객체란? 이름(key) : 값(value) 형태의 프로퍼티를 저장하는 컨테이너 (해시 자료구조와 유사하다.)
- 프로퍼티의 기본 타입의 값을 포함하거나, 다른 객체를 가리킬 수 있다.
📖출처
송형주, 고현준 지음, 『인사이드 자바스크립트』, 한빛미디어(2014)
'개발 > JavaScript' 카테고리의 다른 글
JavaScript] 자바스크립트 뿌시기 (프로토타입) (0) | 2021.01.05 |
---|---|
JavaScript] 자바스크립트 뿌시기 (참조 타입의 특성) (0) | 2021.01.05 |
JavaScript] 자바스크립트 뿌시기 (객체 타입) (0) | 2021.01.04 |
JavaScript] 함수와 프로토타입 체이닝 (0) | 2020.10.14 |
JavaScript] 데이터타입 (0) | 2020.09.22 |