Skip to content

Latest commit

 

History

History
65 lines (60 loc) · 3.66 KB

File metadata and controls

65 lines (60 loc) · 3.66 KB

JavaScript

웹 구성요소

  • HTML
    • 학술 문서 공유를 위해 만들어진 포맷
    • 문장의 구조와 내용을 기술
  • CSS
    • 문서의 모양을 정의
  • 브라우저
    • 웹 서버에서 HTML 문서와 이미지, 스타일시트를 다운받아 이를 해석하고 포맷팅하여 보여줌
    • 정적으로 보여줄 뿐 실시간 동작 불가
  • 스크립트
    • 앱 제작 시 사용자의 조작에 대해 어떤 반응을 보일 것인지를 정의하는 코드가 필요
    • 이런 동작을 정의하는 코드가 스크립트
    • 해석과 동시에 실행하는 인터프리터 방식의 간단한 언어
    • 가볍고 배우기 쉬움
    • 스크립트의 실행 주체는 웹 브라우저
    • 스크립트 코드는 HTML 문서에 같이 작성되어 배포. 브라우저가 이 문서의 코드를 해석하여 실행
    • 브라우저 상에서 실행되는 언어 -> 클라이언트 스크립트
    • JSP, ASP, PHP 등 서버 상에서 실행되어 HTML 문서로 만들어내는 역할을 하는 언어 -> 서버 스크립트
    • 스크립터 언어 이전에도 자바 애플릿, 플래시, 실버라이트 등 동작을 정의할 수 있는 기술이 있었음
    • HTML5에서 코드를 작성하는 공식적이고 유일한 방법으로 자바스크립트를 채택
    • HTML5에 새로이 추가된 캔버스, 웹 스토리지, 웹 소켓 등의 신기술은 자바스크립트 없이 구현 불가

자바스크립트 역사

  • 모카 -> 라이브스크립트 -> 자바스크립트 -> EcmaScript
  • C언어를 기반으로 만들어짐

자바스크립트 특징

  1. 인터프리터 언어
    • 웹 브라우저의 JIT(Just In Time Compiler)를 통해 빠른 컴파일
    • 실행 파일을 만들어 내지 않음
    • 해석과 동시에 실행하는 인터프리터 방식
    • 별도의 컴파일러나 링커가 필요없으며 해석기가 단계적으로 해석하여 실행하므로 개발하기 간편
    • 한 줄씩 순서대로 읽어서 실행하므로 모든 코드를 일괄 점검하기 어렵다는 한계 존재
      • 타입 체크가 느슨하며 함수나 배열의 형식이 지나치게 유연
  2. 동적 프로토타입 기반 객체 지향 언어
    • 자바스크립트는 클래스가 아닌 프로토타입을 상속하는 프로토타입 기반 객체 지향 언어
    • 객체를 생성한 후에도 프로퍼티와 메서드를 동적으로 추가하거나 삭제할 수 있음
  3. 동적 타입 언어
    • 변수 타입이 없음
    • 프로그램 실행 도중 변수에 저장되는 데이터 타입이 동적으로 바뀔 수 있음
  4. 함수가 일급 객체(first class object)
    • 자바스크립트의 함수는 객체
    • 함수에 함수를 인수로 넘길 수 있음
    • 고차 함수 구현 가능 -> 함수형 프로그래밍 가능
  5. 함수가 클로저를 정의
    • 클로저로 변수를 은닉하거나 영속성을 보장하는 등 다양한 기능 구현 가능

타입

  • 언어 타입 / 명세 타입
  • 변수는 타입이 없지만 값은 타입이 있고, 타입은 값의 내재된 특성을 정의
  • 내장 타입
    • null
    • undefined : 값이 없는 변수의 값.
      • undefined "값이 없는" : 접근 가능한 스코프에 변수가 선언되었으나 현재 아무런 값도 할당되지 않은 상태
      • not defined(undeclared) "선언되지 않은" : 접근 가능한 스코프에 변수 자체가 선언조차 되지 않은 상태
      • 선언되지 않은 변수도 typeof를 하면 undefined로 나온다
    • boolean
    • number
    • string
    • object
    • symbol(ES6부터 추가)
    • typeof 연산자를 통해 타입 확인