둘 다 외부 파일이나 라이브러리를 불러올 때 사용하는 모듈키워드이다.
ex) const library = require("./module.js")
ex) import library from "./module.js"
require()는 프로그램의 어느 지점에서나 호출 할 수 있지만 import()는 파일의 시작 부분에서만 실행할 수 있다 (하지만 import 전용 비동기 문법을 사용하면 파일 중간에 모듈 불러오기도 가능)
하나의 프로그램에서 두 키워드를 동시에 사용할 수 없다.
일반적으로 import()는 사용자가 필요한 모듈 부분만 선택하고 로드 할 수 있기 때문에 더 선호된다. 또한 require()보다 성능이 우수하며 메모리를 절약한다.
※ module : 어플리케이션을 이루는 각각의 파일.
대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리
스크립트 하나는 모듈 하나이다.
※ 모듈 최상위 레벨의 this는 undefined,
일반 스크립트의 this는 전역 객체이다.