타입과 변수, 함수 - JeongWu/fe-javascript GitHub Wiki
타입과 변수
자바스크립트
- 싱글 스레드 이벤트 기반
- 다중 프로그램 패러다임(함수 기반)
- 프로토타입 언어
- 동적 타입 언어: 실행 시점에 변수 타입이 결정
타입
- 원시형: Number, String, Boolean, null, undefined : 변수에 값 직접 저장
- 참조형: Object(최상위) : 메모리에 값 저장하고 참조
- Array, Function, Date 등 네이티브 객체
변수
: 식별자 역할
- 선언: var 키워드(es6: let, const)
- 값 할당: = 연산자
연산자
- ===: 자료형, 값이 모두 같으면 true
- !==: 자료형, 값 어느 하나라도 같지 않으면 true
- typeof: 변수형의 자료형 return (null의 typeof : object)
- !!: 피연산자를 Boolean으로 변환시켜 return
- falsy value: 0, -0, "", null, undefined, false, NaN
- truthy value: falsy value 제외한 전부 (빈 배열, 빈 객체)
객체
생성방법
- 객체 리터럴:
var obj={name:"sally"};
- 생성자 함수:
var obj= new Object();
참조
obj.name;
obj["name"]; //key값이 변수나 연산일 때 사용
특징
- 모든 객체는 Object 객체 상속
- 참조 가능한 내부 속성을 가지고 있음
- wrapper 객체: 원시형을 감싸는 객체 (Number, String, Boolean)
- nested object: 객체 속에 객체가 들어있는 상황
- 글로벌 객체: 노드 환경- node, 브라우저- window
연산자
- new: 초기화
- instanceof: 동일 객체형의 인스턴스인지 판별
- delte: 객체의 property 제거
garbage collector
- 글로벌 객체로부터 참조를 통해 닿을 수 없는 객체를 메모리에서 제거
함수
1. 특징
- 객체 생성(생성자 함수)
- 일급 객체(Object 상속)
- 변수의 값, 객체나 배열의 멤버가 될 수 있음
- 함수의 매개변수나 반환값이 될 수 있음
- 다형성
- 함수의 매개변수를 유동적으로 전달하여 오버로딩
2. 정의
- 함수 선언식: function+ 함수명
function 함수명(매개변수){
...
return 반환값;
}
- 함수 표현식: 익명함수
var 변수명=function (매개변수){
...
return 반환값;
}
- 생성자 함수: 익명함수
new Function("매개변수", "실행 소스코드");
- 화살표 함수 (ES6)
(매개변수)=>{
...
return 반환값;
}
3. 메서드
객체 내부에 멤버로 존재하는 함수
var obj={
method1:function(){return 1;},
method2:()=>{},
method3:function fn(){},
method4(){}
};
4. 구조
- this: 함수를 호출한 주체 객체
- 함수가 호출될 때 결정
- call, apply, bind를 통해 변경
- arguments: 함수 호출 시 전달되는 인수 정보를 배열 형태로 담고 있는 객체
- prototype: 생성자 함수를 통해 객체 생성했을 때 공통의 속성, 동작이 담겨있는 객체
- 프로토타입 객체: 인스턴스간 공유
__proto__
: 본 함수와 연결된 상위 객체의 prototype의 속성과 값을 가진 객체
function Sally(){
this.dream="지구정복";
}
var sally1=new Sally();
Sally.prototype.weapon="gun"
var sally2=new Sally();
sally2.weapon="bomb"`
5. 상속
- 생성자 상속: apply 메서드 사용
- 프로토타입 상속: 프로토타입 링크 연결
-> prototype chain
Sally2.prototype.__proto__=Sally.prototype