자바스크립트

1 minute read


자바스크립트

자바스크립트는 웹 브라우저에서 사용하기 위해 만들어진 프로그래밍 언어는데 Node.js와 같은 런타임을 통해서 서버 프로그래밍에도 사용되고 있다.

특징

  • 동적언어이다.

  • 인터프리터언어이다.

  • 객체 지향형 프로그래밍과 함수형 프로그래밍 모두 표현 가능하다.


정적언어와 동적언어

두 언어를 구분하는 기준은 코드의 상수, 변수, 함수 등의 타입이 확정되는 시점에 따라 구분된다.

  • 정적언어

    int num = 1;
    string name = "bak";
    

    컴파일 타임에 타입을 확인한다. 따라서 미리 타입을 확안하기 때문에 타입으로 인한 런타임 오류를 방지할 수 있으며 명시적으로 지정했기 때문에 코드의 가독성이 좋다. 하지만 그 만큼 매번 변수를 지정해야하는 번거로움이 있다.
    C, C++, java 등

  • 동적언어

    var num = 1;
    num = true;
    num = "hello";
    

    런타임에서 타입이 결정된다. 매번 타입을 써줄 필요가 없기 때문에 빠르게 코드를 작성할 수 있으며 상대적으로 언어를 사용할 때 타입과 관련한 코드와 규칙이 적기 때문에 코드가 짧고 배우기가 쉽다. 하지만 실행 중 타입에러가 발생할 수 있다.
    JS, Ruby, Python 등


컴파일러와 인터프리터

두 가지 모두 사람이 이해할 수 있는 언어(고급언어)를 기계가 이해할 수 있는 언어(기계어)로 번역해서 실행할 수 있게하는 것이다.

  • 컴파일러
    작성된 고급 언어를 한 번에 기계어로 번역을 하기 때문에 번역시간(컴파일)은 상대적으로 오래 걸리지만 한 번 번역을 하면 실행 파일이 생성되기 때문에 실행 시간이 빠른 편이다.

  • 인터프리터
    한 줄씩 번역을 진행하기 때문에 번역 시간은 빠르지만 매번 실행시 같은 번역을 진행해서 상대적으로 실행 속도는 느린 편이다. 하지만 플랫폼에 종속되지 않는 다는 큰 장점이 있다.


멀티 패러다임 언어

자바스크립트는 사용자가 원하는대로 함수형 프로그래밍을 할 수 도 있고 객체지향 프로그래밍도 가능하다.

  • 함수형 프로그래밍
    입출력이 순수하다. 즉 하나 이상의 인자를 받고 반드시 받은 인자를 처리하여 결과물로 돌려주어야한다. 그리고 인자를 제외한 다른 변수는 사용하지 않는 것을 말하며 이를 순수 함수라고 한다. 자바스크립트는 this 개념 때문에 순수함수를 사용하기는 힘들다.

  • 객체지향 프로그래밍
    자바스크립트는 진정한 클래스는 아니지만 객체를 생성하는 생성자 함수를 제공하기 때문에 객체지향 프로그래밍도 가능하게 된다.