[JavaScript] 자바스크립트란?! ✅

parkheeddong·2023년 4월 30일

JavaScript

목록 보기
1/26
post-thumbnail

`

`

✨ ‘웹페이지에 생동감을 불어넣기 위해’ 만들어진 프로그래밍 언어

HTML로는 웹의 내용을 작성하고, CSS로는 웹을 디자인한다면 자바스크립트로는 웹의 동작을 구현할 수 있다!
자바스크립트로 작성한 프로그램을 스크립트(script)라고 부른다.


✅ 왜 자바스크립트일까..?! 자바랑 무슨 관계일까?

처음 자바스크립트는 'LiveScript'라는 이름이었지만 당시 자바의 인기가 높았기에 자바의 동생격 언어로 홍보하면 도움될 것이라는 의사결정을 내리고 이름을 바꾸었다. 그러나, 자바스크립트는 자바와 독자적 언어이며 아무런 연관이 없다!


📌 자바스크립트의 특징

1) 인터프리터 언어

➡️ 컴파일러는 프로그래밍 언어를 다른 프로그래밍 언어로 번역한다. 즉, 하이레벨 프로그래밍 언어에서 기계어로 변환하는 것이다.
➡️ 인터프리터는 프로그래밍 언어를 프로그래밍 언어로 '번역'하는 것이 아니라, 그저 '이해'한다.

인터프리터 언어는 컴파일 작업을 거치지 않고, 소스 코드를 바로 실행할 수 있는 언어이다.
코드가 실행되는 단계인 '런타임'에, 한 줄 씩 byte code로 변환된 후 실행된다.
개발자가 별도의 컴파일 작업을 수행하지 않아도 되므로 실행 파일도 생성되지 않는다.

-> 자바스크립트는 웹 브라우저에 포함된 자바스크립트 인터프리터가 소스 코드를 직접 해석하여 바로 실행한다.



2) 동적타입핑 언어

➡️Statically typed languages

컴파일 시점에 Type Checking이 이뤄진다.
Type 에러는 프로그램 실행 이전에 감지된다.
✔ C, C++, Java, Scala, etc

➡️Dynamically typed languages

런타임 시점에 Type Checking이 이뤄진다.
프로그램 실행 도중에 Type Error가 발생할수 있다.
✔ Python, Javascript, Ruby, List, etc

동적타입핑 언어란, 런타임에 타입 지정이 실행되는 언어이다!
변수 선언 시 타입을 명시적으로 선언하지 않고, 타입을 추론한다.


3) 객체(object) 기반의 스크립트 언어

💭 일급객체란 무엇일까?!

"컴퓨터 프로그래밍 언어에서, 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체."

'일급' 이란 사용할 때 다른 요소들과 아무런 차별이 없다는 것을 뜻한다.

1) 모든 일급 객체는 변수나 데이터에 담을 수 있어야 한다.

2) 모든 일급 객체는 함수의 파라미터로 전달 할 수 있어야 한다.

3) 모든 일급 객체는 함수의 리턴값으로 사용 할수 있어야 한다.

-> Javascript와 Python은 일급객체 언어이지만 C언어는 일급객체 언어가 아니다!

💭 일급 함수란?!

"함수를 일급객체로 취급하는 것"을 의미한다.

자바스크립트에서 함수는 일급객체이다.
일급 함수를 가진 언어에서는, 함수를 변수에 할당하거나, 함수를 다른 함수에 인수로 제공하거나, 함수가 함수를 반환할 수 있다.

1) 변수에 함수 할당

JavaScript
const foo = function() {
   console.log("foobar");
}
// 변수를 사용해 호출
foo();

2) 함수를 인자로 전달


function sayHello() {
   return "Hello, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// `sayHello`를 `greeting` 함수에 인자로 전달
greeting(sayHello, "JavaScript!");

3) 함수 반환


function sayHello() {
   return function() {
      console.log("Hello!");
   }
}

0개의 댓글