JavaScript 소개
JavaScript 개요
JavaScript는 프로토타입 기반의 스크립트 프로그래밍 언어로 객체지향 개념을 지원한다.
JavaScript의 특징
- JavaScript는 HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어.
- JavaScript는 개발자가 별도의 컴파일 작업을 하지 않는 인터프리터 언어.
JavaScript 시작
JavaScript 선언
- HTML에서 JavaScript를 사용하려면
<script>
태그를 사용
- HTML 파일 내부의
<head>
나 <body>
안 어느 곳에서나 선언 가능
- 하지만
<body>
안의 끝부분에 둘 것을 권장함.
JavaScript 기본문법
변수(Variable)
- JavaScript는 변수를 선언할 때 타입을 명시하지 않고 var keyword를 사용하여 선언.
- JavaScript는 동적타입언어. 변수의 타입 지정없이 값이 할당되는 과정에서 자동으로 변수의 타입이 결정. 같은 변수에 여러 타입의 값을 할당 가능.
자료형(data type)
- 원시타입과 객체타입으로 분류.
- 원시타입에는 숫자, 문자열, boolean, null, undefined와 같이 5가지가 있다. 이를 제외한 모든 값은 객체타입.
숫자 자료형
- 언더플로우, 오버플로우, 0으로 나누는 연산에 대해 예외를 발생시키지 않는다.
- 숫자와 관련된 특별한 상수가 존재한다. (Infinity, NaN)
문자열
- 문자열은 16비트의 유니코드 문자를 사용.
- 문자 하나를 표현하는 char와 같은 문자형은 제공하지 않는다.
- 작은 따옴표, 큰 따옴표 둘다 사용 가능. 혼용 불가.
- 이스케이프 시퀀스(
\
)도 사용가능.
boolean, null, undefined
- 비어있는 문자열, null, undefined, 숫자 0은 false로 간주된다.
- null은 값이 없거나 비어있음을 뜻하고, undefined는 값이 초기화되지 않았음(정의되지 않음)을 의미.
자동 형 변환
- JavaScript는 Java, C++ 등과 같은 언어와는 달리 자료형에 대해 매우 느슨한 규칙을 적용.
- 어떤 자료형이든 전달할 수 있고, 그 값을 필요에 따라 변환 가능.
- 서로 다른 자료형의 연산 가능.
- 모든 자료형을 var로 선언하기 때문에 변수 선언은 쉽지만 이런 느슨한 규칙 때문에 혼란을 야기.
변수 호이스팅
- var 키워드를 사용한 변수는 중복해서 선언 가능.
- 호이스팅이란, var 선언문이나 function 선언문 등 모든 선언문이 해당 Scope의 처음으로 옮겨진 것처럼 동작하는 특성. 즉 JavaScript는 모든 선언문이 선언되기 이전에 참조가 가능.
ECMAScript 6 - let 키워드와 const 키워드
- ECMAScript5까지는 식별자에 값을 넣는 변수의 기능은 var 키워드만 사용. (전역 스코프, 재선언 가능)
- ECMAScript6부터는 let과 const 키워드를 추가. (해당 스코프, 재선언 불가능)
객체 - 개요
- 객체는 이름과 값으로 구성된 프로퍼티의 집합.
- JavaScript의 객체는 키와 값으로 구성된 프로퍼티들의 집합.
- JavaScript의 함수는 일급 객체이므로 값으로 사용할 수 있다. 따라서 프로퍼티의 값으로 함수를 사용 가능.
객체 - 생성
- 가장 일반적인 방법.
- {}를 사용하여 객체를 생성.
함수 호이스팅
- 함수 선언문의 경우 함수 선언 위치와 상관없이 코드 내 어느 곳에서든지 호출 가능.
- JavaScript는 모든 선언을 호이스팅함.
- 함수 선언문으로 정의된 함수는 JavaScript 엔진이 스크립트가 로딩되는 시점에 이를 변수객체 저장한다. 함수 선언, 초기화, 할당이 한번에 이루어진다.
콜백 함수
- 콜백 함수는 함수를 명시적으로 호출하는 방식이 아니라 특정 이벤트가 발생했을 때 시스템에 의해 호출되는 함수를 말함.
- 일반적으로 콜백 함수는 매개변수를 통해 전달되고 전달받은 함수의 내부에서 어느 특정시점에 실행됨.
- 콜백 함수는 주로 비동기식 처리 모델에서 사용됨.