본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.
Front-end/Javascript

Javascript 공식문서 정리 [개요]

👇🏻  참조문서 

https://developer.mozilla.org/ko/docs/web/javascript/a_re-introduction_to_javascript

 

JavaScript 재입문하기 (JS ​튜토리얼) - JavaScript | MDN

어째서 재입문일까요? 왜냐하면, JavaScript는 세계에서 가장 오해받고 있는 프로그래밍 언어로 악명이 높기 때문입니다. 종종 장난감같다고 조롱당하기도했지만, 이 거짓말같은 단순함 아래에

developer.mozilla.org


εїз 이 문서에 어떤 방식으로 도달했던 간에, 나는 자바스크립트를 1년 동안 필요에 의해 구글링하며 사용한 사람이다. 애초에 제대로 기초부터 공부하지 않는다면 이 꼴이 날테니 제대로 공부하는게 중요하다는 오지랖을 부리며 기본부터 시작해본다. 

 

Javascript는 입출력 개념이 없는, 호스트 환경 아래에서 스크립트 언어로서 동작하도록 디자인되어 있는 언어이다. 

 

내 머리에는 정녕 💩만 들은 것일까. 두 단어에서 막혔다. 

  1. 호스트 환경
  2.  스크립트 언어

웹 페이지 작성을 위해 HTML에 javascript를 사용한다면, 웹 브라우저는 웹 페이지를 제어하기 위한 수단(window.alert() 같은)을 제공한다. 서버 프로그래밍할 때 사용하는 javascript인 Node.js는 서버 사이드 기능을 제공한다. 

 

호스트(host)란 자바스크립트가 돌아가는 플랫폼을 말한다. 위의 예시에서 호스트는 브라우저, 웹 서버임을 알 수 있다. 이와 같은 플랫폼이 해당 플랫폼에 특정되는 기능을 제공하는 것을 호스트 환경(host environment)라고 한다. 

 

εїз host = 주인, javascript = 하인

하인이 일하는 이유는 주인(이 주는 돈) 때문이다.  호스트가 어떤 건지 잘 모르겠다면 무엇을 코딩하기 위해(웹 페이지, 서버?) 자바스크립트를 사용하는지 생각해보면 될 것 같다. 호스트가 제공하는 호스트 환경은 아마 하인에게 주는 빗자루 정도..? [지극히 주관적인 생각, 거를 사람은 알아서 거르시길]

 

스크립트 언어(script language)는 다른 응용 프로그램에 삽입되어 동작하는 프로그래밍 언어를 의미한다.

  • 비 스크립트 언어 (C, C++, Java 등) :  컴파일된 후 독립적으로 작동하는 하나의 완전한 언어
  • 스크립트 언어 (javascript, jQuery, Python, PHP 등) : 다른 응용 프로그램 안에 삽입되어 동작하는 언어
Javascript는 유형 및 연산자, 표준 내장 객체 및 메소드가 있는 다중 패러다임, 동적언어로 Java 및 C언어를 기반으로 한다. Javascrip는 클래스 대신 객체 프로토 타입을 사용하여 객체 지향 프로그래밍을 지원한다. 또한, 함수형 프로그래밍도 지원하는데 함수는 객체이며, 함수는 실행 가능한 코드를 유지하고 다른 객체와 마찬가지로 전달될 수 있다. 

 

그렇다. 내 머리는 💩만 들은 것이 확실하다. 내 이해를 막는 단어는 세기 싫을만큼 많아졌다.

 

  1. 내장 객체 및 메소드
  2. 다중 패러다임
  3. 동적 언어
  4. 객체 프로토 타입
  5. 객체 지향 프로그래밍
  6. 함수형 프로그래밍

한 줄에서 세 줄로 늘어나 모르는 단어도 3배가 된 것일까. 이제부터 큰 일을 봐야 한다. 머리에 가득찬 💩을 배출시켜야 하니깐.

 

집이나 오피스텔을 보러가면 부동산 선생님이 유혹하듯 하는 말이 있다.

 

😉 : "여기 신축이라 냉장고, 세탁기, 식기세척기 다 빌트인으로 되어 있어요~"

 

빌트인은 한국어로는 붙박이라고 하고 집에 살게 된다면 새로 살 필요 없이 자유롭게 이용하면 된다. 필요한 모든게 빌트인 되어 있다면 그곳은 바로 풀옵션.

 

내장 객체는 영어로 Built-in Object이다. 한마디로, 어딘가 안에 붙박이로 들어있어서 필요한 경우 사용이 가능하다는 것이다. 표준 내장 객체로는 Array, Object, Number, Function 등이 있다. 메소드는 함수와 비슷하지만 객체에 사용한다는 차이점이 있다. 예를 들어, 배열에서는 push, pop, shift 등이 메소드가 된다. 

 

패러다임(paradigm)은 일반적으로 사물에 대한 이론적인 체계나 틀을 의미한다. 프로그래밍에서 패러다임이란 코딩을 하는 체계를 말하는데 함수형 프로그매밍, 객체 지향 프로그래밍등이 그것이다. 

 

다중 패러다임(multi-paradigm)이란 하나 이상의 프로그래밍 패러다임을 지원하는 언어를 말한다. Python은 함수형, 명령형, 클래스 기반의 객체 지향 프로그래밍을 지원하고 javascript는 앞에서도 말했듯이 함수형, 명령형, 프로토타입 기반 객체 지향 프로그래밍을 지원한다. 

 

εїз 함수형, 프로토타입 기반 객체 지향 프로그래밍도 나의 💩제거 리스트에 있어서 한번에 할려고 했지만 ╮ (. ❛ ᴗ ❛.) ╭  내용을 조금 찾아보니 굉장히 딥하고 길어질 것 같아서 다른 포스트로 빼도록 하겠다. 

 

변수를 선언하는 방법을 살펴보자.

 

# A
Int num = 1;

# B
Var num = 1;

 

A와 B 모두 num 변수는 1의 값을 갖는다. 하지만, A는 int 타입으로 선언이 되었고 B는 타입 선언이 되어 있지 않다. 

 

A는 컴파일 시 변수의 타입이 결정되는 정적타입 언어(statically typed language)이고 B는 런타임 시 변수의 타입이 결정되는 동적타입 언어(dynamically typed language)이다. 한마디로, 정적 언어는 코드를 작성할 때 자료형을 지정해야 하고 동적 언어는 그럴 필요가 없다. 동적 언어는 유연성이 높고 코드 작성이 효율적이지만 스펠링 에러와 같은 타입에 대한 리스크를 런타임에 감당해야 한다는 단점이 있다. Python과 Ruby가 동적언어이다. 

 

εїз 요즘 웹의 규모가 커져서 타입에 대한 리스크를 감당하기 힘들어졌기에 나온 것이 typescript이다. javascript를 동적 언어에서 정적 언어로 바꿀 수 없을까 하다 나온거라 typescript는 정적 언어이다. 

 

εїз 객체 프로토타입도 길어질 것 같으므로 따로 포스팅하도록 하겠다. 오늘 공부 그만하고 싶어서 미루는 거 아님. ʕ ◔ᴥ◔ ʔ 어쨌든 진짜 아님.

 

 

객체 프로토타입

[링크] 이 인간이 정신차리면 아마 올라올 것임

 

객체 지향 프로그래밍

[링크] 이 인간이 정신차리면 아마 올라올 것임

 

함수형 프로그래밍

[링크] 이 인간이 정신차리면 아마 올라올 것임

 

 

εїз 공부 많이 한 것 같아도 고작 개요 하나 햇음