MDN의 JavaScript 첫걸음에서 ‘JavaScript가 뭔가요?’ 부분을 혼자 공부하면서 정리한 내용입니다.
출처: https://developer.mozilla.org/ko/docs/Learn/JavaScript/First_steps

  • html: 웹 컨텐츠를 문단, 제목, 표 등으로 정의하고 부여하는 마크업 언어 (마크업 언어란? 태그 등을 이용하여 언어나 데이터의 구조를 명시하는 언어)
  • css: html 컨텐츠를 꾸며주는 스타일 규칙 언어
  • Javascript: 동적으로 컨텐츠를 바꾸는 스크립트 언어 (스크립트 언어란? 기존에 이미 존재하는 소프트웨어를 제어하기 위한 언어)

코어 자바스크립트 언어 기반의 기능성

  • Application Programming Interfaces (APIs)
  • API는 이미 만들어진 코드의 집합체

  • Browser API는 웹 브라우저에 설치된 API.
    • DOM (Document Object Model) API :HTML과 CSS를 알맞게 조정
    • Geolocation API : 지리적인 정보 검색
    • Canvas, WebGL: 2D와 3D 그래픽을 만들 수 있게 함
  • Third party API: 브라우저에 기본적으로 설치된 API가 아닌 인터넷에서 개인적으로 프로그래밍한 것
    • Twitter API: 웹사이트에 가장 최근의 트윗을 보여줌
    • Google Maps API, OpenStreetMap API: 웹사이트에 원하는 지도를 넣어주고 추가기능 지원

웹 페이지에서 JavaScript는 어떤 일을 하는가?

  • 브라우저에서 웹페이지를 불러올 때, 브라우저 안에서 HTML, CSS, Javascript 코드가 실행됨
  • html과 css가 결합되고 웹페이지 상에 올려진 후, 브라우저의 스크립트 엔진에 의해 자바스크립트가 실행됨
  • 자바스크립트는 해석형 언어이다. 코드가 순차적으로 실행되고 그 결과가 즉시 반환. 브라우저에서 동작하기 전에 코드를 변환할 필요가 없음.

인라인 JavaScript 처리기

<button onclick="createParagraph()">Click me!</button>
  • 이 방법은 효율적이지 않음. html 소스를 복잡하게 하고 모든 버튼마다 onclick 속성을 포함해야 함.

스크립트의 로딩 방법

  • 자바스크립트가 html 요소보다 먼저 실행된다면 조작할 요소가 존재하지 않기에 작동하지 않을 것.
  • 내부 자바스크립트 예제 해결 방법
    document.addEventListener("DOMContentLoaded", function() {
    ...
    });
    

    “DOMContentLoad” 이벤트가 발생했을 때 function()을 실행한다는 의미.

  • 외부 자바스크립트 해결 방법 <script src="script.js" async></script> async 속성 사용. 비동기방식으로

(웹 개발시 실제로 겪었던 에러이고, async 속성을 통해 해결했었다.)

async & defer

위 문제를 해결하기 위한 두 가지 방법.

  • async는 페이지 렌더링 중단 없이 스크립트를 다운로드 하고, 다운로드가 끝나자마자 이를 실행시킴. async는 각각의 스크립트가 독립적으로, 서로에게 의존하지 않는 관계일 때 적절.
<script async src="js/vendor/jquery.js"></script>

<script async src="js/script2.js"></script>

<script async src="js/script3.js"></script>

3개의 스크립트를 로딩하지만 이들의 순서는 보장할 수 없다.

  • defer는 이와 다르게 순서대로 다운로드 한 후 모든 스크립트와 내용이 다운로드 되었을 때 실행됨.