본문 바로가기
WEB/JAVASCRIPT

000. Javascript란?

by hyun-am 2019. 10. 22.

우리가 생각하는 Javascript

 

먼저 자바 스크립트하면 HTML, CSS, JavaScript 할 때 먼저 떠오를 것입니다. 

HTML은 웹의 뼈대를 관리하고 CSS는 웹의 글씨, 모양, 색깔 등 디자인과 같은 요소를 관리하고 Javascript는 웹의 동작 부분을 담당합니다. 자바스크립트는 동적으로 콘텐츠를 바꾸고, 멀티미디어나 움직이는 이미지 등 웹페이지를 꾸미는 역할을 한다고 생각하면 됩니다.

 

먼저 자바 스크립트하면 객체 기반의 스크립트 프로그래밍 언어로서 주로 웹 개발에 많이 사용한다고 생각하겠지만 , 다른 응용프로그램의 내장 객체에도 접근할 수 있는 기능도 가지고 있어서 응용 범위가 매우 넓습니다.

 

Javascript의 역사

 

1995년, 그 당시의 웹브라우저 시장은 넷스케이프 사의 내비게이터가 지배하고 있었습니다. 이 회사에서 가볍게 html페이지에 움직임을 주고 싶어서 프로그램 언어를 추가하기로 결정해서 Bredan Erich(브랜든 아이크)를 고용했는데, 10일 만에 언어를 완성했습니다. 처음 언어의 이름은 "Mocha"이지만 나중에 "LiveScript"에서 "JavaScript"로 바뀌었습니다.

 

또한, 표준화를 위해 넷스케이프 사에서 표준화 기구인 ECMA international에 요청했고, 1997년 7월에 완성되었습니다.

이때 표준 언어의 이름은 ECMAScript라고 결정되었습니다. 최근 ES6, ES7도 다 여기서 줄여진 말입니다.

 

Javascript의 특징 

 

다른 스크립트 언어들처럼 동적 형 변환이 가능합니다. 

 

var a = 5;
var ch = "hi";
console.log(i+ch);
ch = 5;
console.log(i+ch);

예를 들어 이런 식으로 작성하면

 

처음 console.log는 5hi가 찍히고 그다음 나오는 console.log에서는 10이 찍힙니다. 

 

그다음 특징은 프로토타입 기반 객체지향 언어입니다.

 

이 말의 뜻은 객체 생성 시에 클래스로부터 그 내용을 상속받아서 객체를 만드는 것이 아니라, 객체로부터 그 특성을 복제하여 새로운 객체를 생성하기 때문에 런타임 중에도 객체의 속성과 값을 추가하거나 변경하고, 삭제까지 가능합니다.

 

var food = { name:"orange", price:25000};
console.log(food);
// Object
// name : "orange"
// price : 25000
// __proto__:Object

food.area = "jeju";
console.log(food);
// Object
// name : "orange"
// price : 25000
// area : "jeju"
// __proto__:Object

이런 식으로 런타임 중에도 객체의 속성과 값을 변경 삭제 가능합니다. 

 

실행 시 동적 코딩 가능

 

프로그램 실행 시 eval()라는 함수를 가지고 있어 프로그램 실행 중 동적으로 코드를 실행할 수 있습니다.

eval("var hi = 'hello world';");
console.log(hi);
// hello world

 

고차 함수 사용

 

고차 함수는 인자로서 함수들을 취하거나 함수를 반환할 수 있는 함수를 말합니다. 자바스크립트에서는 다른 언어에서는 불가능한 방식으로 함수들을 쉽게 조작할 수 있습니다.

var blog_func = function(test_func){test_func();};
blog_func(function () { console.log("고차 함수 연습!");});
// 고차 함수 연습!

 

그 외의 특징들

 

인터프리터 언어입니다.

 

프로그램 언어를 소스코드 그대로 실행시킬 수 있습니다. 

 

함수가 일급 객체입니다.(first class object), 함수가 중심인 언어라고 생각하면 됩니다.

 

- 변수 혹은 데이터 구조에 담을 수 있다.

- 파라미터로 전달할 수 있다.

- 반환 값으로 사용할 수 있다.

- 고차 함수를 구현할 수 있어 함수형 프로그래밍이 가능하다.

 

함수가 클로저를 정의합니다.

 

- 클로저라는 게 있고, 함수라는 게 있습니다.

- 클로저란 표현할 때 함수를 활용한다는 뜻입니다. 

- 자세한 내용은 뒤에서 설명하겠습니다.

 

댓글