자바스크립트란?

Shawn·2025년 11월 1일

JavaScript

목록 보기
1/8
post-thumbnail

1. 자바스크립트란 무엇인가?

초창기의 웹은 정적인 페이지로 구성되어 있었다.
HTML로 문서를 작성하고, CSS로 디자인하는 방법밖에
존재하지 않았던 웹사이트에 불과하였지만,

Javascript의 등장 이후로 중요한 언어 중 하나로 거듭나게 되었다.

웹의 부상은, Javascript를 우리가 상상하지 못할 만큼 끌어올렸다
해도 과언이 아니다.

이분이 자바스크립트의 최초 개발자,
"브랜드 아이크(Brendan Eich)" 이다.
아마 JavaScript가 없었더라면, 웹페이지는 심심한 화면으로만 보였을 것이다.

조금 풀어 쓰면 이렇게 말할 수 있다.

웹페이지를 생동감을 불어넣기 위해서 만들어진 프로그래밍 언어

자바스크립트로 작성한 프로그램을 스크립트(script)라고 부른다.

스크립트는 웹페이지 HTML안에서도 작성이 가능한데,
웹페이지를 불러올 때 스크립트가 자동으로 실행된다.

2. 근데 왜 "자바" 스크립트인가?

처음에 만들어질 때는 "LiveScript"라는 이름으로 불렸었다.
그때 당시에 자바의 인기가 아주 높은 상황이었는데,
자바의 "동생" 격인 언어로 홍보하면 도움이 될 것이라는
의사결정을 내리고 이름을 바꿨다고 한다.

이름은 자바에서 차용해 왔지만 사람들이 착각할 수도 있는 부분이,
"엄연히 자바스크립트는 자바와는 독자적인 언어 " 이다.

꾸준한 발전을 거듭하게 되면서 ECMAScript라는 고유한 명세를 갖춘
독립적인 언어가 되었고, 자바스크립트는 자바와 아무런 연관이 없다.

자바스크립트가 이토록 오랫동안 사랑받을 수 있는 이유는,

친숙한 Java 스타일 문법 덕분에 진입 장벽이 낮았고,
초보자와 디자이너도 쉽게 배울 수 있었다.

이러한 이유로 빠르게 퍼져나가게 되었고
이토록 자바스크립트는 오랫동안 많은 개발자들이 사용하고,
꾸준하게 아직까지도 생존할 수 있었던 이유 중에 하나라고 말할 수 있다.

3. 자바스크립트만의 강점

자바스크립트만의 강점으로는 세가지로 나눌 수 있다.

1. HTML/CSS와 완전히 통합을 할 수 있다.
2. 간단한 일은 간단하게 처리할 수 있게 한다.
3. 모든 주요 브라우저에서 지원하고, 기본 언어로 사용된다.

위 3가지 모두를 지원하는 브라우저 연관 기술은
오직 자바스크립트 하나 뿐이다.

이러한 특징으로 자바스크립트는 브라우저 인터페이스를 만들 때,
가장 널리 사용되고 있다.

이 외에도 자바스크립트를 이용하여 서버나 모바일 앱 등을
만드는 것도 가능하다.

4. 자바스크립트 특징

1. 자바스크립트는 웹 브라우저에서 동작할 수 있는
유일한 프로그래밍 언어이다.

자바스크립트는 기본 문법에서 자바, C와 유사하고
기존의 프로그래밍 언어에서 많은 영향을 받았다.

2. 개발자 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어이다.
대부분 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을
결합하여 비교적 처리 속도가 느린 인터프리터의 단점을 해결했다.

인터프리터는 소스코드를 즉시 실행하고, 컴파일러는 빠르게 동작하는
머신 코드를 생성하고 최적한다.

이를 통하여 컴파일 단계에는 추가적인 시간이 필요함에도 불구하고
보다 빠른 코드 실행이 가능하다.

3. 자바스크립트는 명령형, 함수형, 프로토타입 기반의 객체지향 프로그래밍의 멀티 페러다임 프로그래밍 언어이다.
자바스크립트는 객체지향 프로그래밍 능력을 가지고 있다.
근데 여기서 오해할 수 있는 부분이 있는데,
클래스 또는 상속, 정보 은닉을 위한 키워드 private가 없어서
객체지향 언어가 아니라고 오해를 가장 많이 받는 언어이다.

자바스크립트는 클래스 기반 객체지향 언어보다 효율적이고,
강력한 프로토타입 기반의 객체지향 언어이다.

프로토타입이 무슨 뜻이야?
객체가 다른 객체로부터 메서드와 프로퍼티(속성)을 상속받기 위해,
사용하는 연결고리 즉, 쉽게 말해 객체의 "원형(원본)"이다.
객체 지향 프로그래밍에서 상속을 구현하는 방식이다.

<출처 : 요즘IT, 작가>

프로토타입에 대해서 더 남겨보자면,
1. 프로토타입(Prototype)

  • 객체의 원형
  • 객체가 다른 객체로 메서드/속성(property)를
    상속받기 위해 사용하는 연결고리

❓프로토타입이 왜 필요하지?
만약 프로토타입이 없다면, 객체마다 필요한 메서드를
전부 복사해서 가지고 있어야 한다.
ex: 1만개의 배열을 생성 한다면,
각각 배열이 map, filter, forEach 메서드를
개별적으로 보관해야되고, 이러한 점은 메모리 낭비가
매우 심할 뿐 아니라 버그 수정 시에 유지보수도 어렵게 만든다.

2. 프로토타입 체인(Prototype chain)

  • 객체 간 연결된 상속 경로
  • 객체에서 특정 속성(property)를 찾을 때 탐색하기 위한 탐색 경로

모든 객체가 자신의 '부모' 역할을 하는 프로토타입 객체와 연결되어
객체의 속성과 메서드를 상속받아 사용할 수 있게 해준다.

만약, 객체에 속성이 없을 땐 프로토타입 체인을 따라서
상위 객체에서 속성을 찾아가는 방식으로 동작을 한다.

(위 사진은 체인의 구조를 나타낸 이미지)
<출처 - 요즘 IT 작가>

출처

야무쌤 자바스크립트 강의
poiemaweb - introduction
요즘IT - 자바스크립트 프로토타입

profile
기억하기 보단, 기록하는 개발자로 나아가고 있습니다

0개의 댓글