📝
서은 STUDY_SCRIPT
  • JAVASCRIPT 기록
  • JAVASCRIPT 문법정리
    • 데이터 저장하기
    • 데이터 불러오기
    • 데이터 실행하기
    • 데이터 제어하기
    • 면접질문 정리
  • PHP를 이용한 사이트 작업
    • PHP와 MySQL
      • 댓글쓰기
      • 회원가입
      • 로그인
      • 게시판
        • 페이지네이션 & 게시글보기
        • 수정/삭제/목록/검색
  • 생활코딩 JavaScript
    • JavaScript 입문수업
      • Basic
        • 자바스크립트 기본 세팅
        • 데이터타입
        • 변수
        • 연산자
        • 조건문
        • 반복문
        • 함수
        • 배열
        • 객체
        • 모듈
        • 정규표현식
      • 함수지향
        • 유효범위
        • 값으로서 함수
        • 값으로서 콜백
        • 클로저
        • arguments
        • 함수의 호출
      • 객체지향
        • 생성자와 new
        • 전역객체
        • this
        • 상속
        • Prototype
        • 표준내장객체의 확장
        • Object
        • 데이터 타입
        • 복제 & 참조
    • JavaScript Basic
      • 자바스크립트란?
      • 데이터타입
      • 변수와 대입연산자
      • 제어할 태그 선택
      • 비교연산자와 불리언
      • 조건문 if
      • 리팩토링
      • 배열 [ ]
      • 반복문 while
      • 배열과 반복문
        • 배열과 반복문의 활용
      • 함수
        • 함수의 활용
      • 객체 { }
        • 객체와 반복문 for~in
        • 프로퍼티와 메소드
        • 객체의 활용
      • 파일로 쪼개서 정리정돈
      • 라이브러리 & 프레임워크
      • UI & API
    • Web Browser
      • JavaScript란?
      • BOM
        • 전역객체 window
        • 사용자와 커뮤니케이션
        • Location 객체
        • Navigator 객체
        • 창 제어
      • DOM
        • 제어 대상 찾기
        • jQuery
        • HTMLElement
        • Element 객체
          • 식별자 API
          • 조회 API
          • 속성 API
        • Node 객체
          • Node 관계 API
          • Node 종류 API
          • Node 변경 API
          • jQuery 노드 변경 API
          • 문자열로 노드 제어
        • HTMLCollection
      • 이벤트
        • 이벤트 등록
        • 이벤트 전파(버블링과 캡처링)
        • 이벤트 기본 동작 취소
        • 이벤트 타입
      • 네트워크 통신
        • Ajax
        • JSON
  • NOMAD JAVASCRIPT
    • VanillaJS
      • Why JS?
      • ES5, ES6
      • Basic
        • Alert & Console
        • Variable
        • Data Types
        • Array & Object
      • Function
      • DOM
        • Event & Event handler
        • Conditional
        • Function Practice
      • Momentum App
        • Making a JS Clock
        • Saving the User Name
        • To-Do List
        • Image Background
        • Getting Weather
  • DREAM CODING
    • 자바스크립트 기초 강의 (ES5+)
      • JavaScript 역사
      • async & defer / Strict Mode
      • Variable / Hoisting / Data Type
      • Operator / if / Loop
      • Function
        • 함수의 선언
        • 함수의 표현
      • Class
      • Object
      • Array
      • Array API
      • JSON
      • Callback
      • Promise
      • Async & Await
  • WEB BOS
    • #JavaScript30
Powered by GitBook
On this page
  • 1. async vs defer
  • 2. async
  • 3. defer
  • 3. Strict mode(엄격 모드)
  • Vanilla JavaScript를 이용할때는 'use strict' 를 사용하는 것이 좋다!

Was this helpful?

  1. DREAM CODING
  2. 자바스크립트 기초 강의 (ES5+)

async & defer / Strict Mode

PreviousJavaScript 역사NextVariable / Hoisting / Data Type

Last updated 3 years ago

Was this helpful?

1. async vs defer

  • Boolean 속성값으로 선언 시 자동으로 true 설정됨

  • 외부 스크립트를 참조하는 경우에만 사용할 수 있으므로, src속성이 명시된 경우에만 사용할 수 있음

2. async

<script async src="main.js"></script>
  1. 병렬구조로 HTML을 보여주면서 JS파일을 fetching(다운)

  2. fetching이 완료되면 HTML 실행시키던 것 멈추고 다운로드된 JS파일을 executing(실행)

  3. executing이 끝나면 나머지 HTML을 parsing

장점

다운로드 시간을 절약할 수 있음

단점

  1. 자바스크립트를 실행하는 과정에서 DOM을 통해 조작하려는 요소가 HTML에서 아직 정의되지 않았을 수도 있음

  2. HTML parsing되는 동안에 스크립트도 실행되며, 스크립트가 실행될 때 parsing이 멈추기 때문에 브라우저 준비가 속도가 늦어짐 → 사용자가 페이지를 보는 시간이 오래걸림

  3. 순서대로 JS가 실행되는 것이 아니라 parsing이 먼저 끝나는 순서대로 실행이 되어서 순서가 중요한 작업의 경우 문제가 생길 수 있음

3. defer

<script defer src="main.js"></script>
  1. HTML을 parsing 하는 동안 script defer을 만나면 필요한 JS파일을 다 다운로드 받아 놓음

  2. HTML parsing을 먼저해서 사용자에게 바로 페이지를 보여 줌

  3. 바로 이어서 다운로드 된 자바스크립트 실행

defer을 쓰는 것이 가장 효율적이고 안전한 방법!

HTML을 parsing하는 동안 필요한 JS 파일을 다 다운로드 받아 놓고 순서대로 실행하기 때문에 개발자가 정의 한 순서가 지켜짐 → 개발자가 원하는 대로 스크립트가 실행 됨

3. Strict mode(엄격 모드)

// Whole-script strict mode syntax
// Javascript is very flexible
// but flexible === dangerous
// added ECMAScript 5
// use this for Vanila Javascript

'use strict';

console.log('Hello World!');

Vanilla JavaScript를 이용할때는 'use strict' 를 사용하는 것이 좋다!

Why? 자바스크립트는 굉장히 유연하기에 개발자가 많은 실수를 할 수 있기 때문에 때론 위험할 수도 있음

ECMAScipt 5에 추가되어져 있고 기존에는 무시되던 에러들을 막아주므로, 자바스크립트 엔진이 좀 더 효율적이고 빠르게 분석할 수 있도록 함

<head> 안에 <async>
<head> 안에 <defer>