ES5까지는 모듈이나 라이브러리를 불러올 때 require 방식을 사용했다. 그러나 ES6에서 import 방식이 도입되었다.
둘의 차이점에는 불러오는 방식에 있다.
require은 변수를 선언하고 할당하듯이 모듈을 불러오고, import는 직관적으로 키워드를 통해 불러온다.
만약 바벨과 같은 ES6 코드를 변환해주는 도구 없이는 require 키워드를 사용해야 한다.
const library = require("library")
import library from "library"
const는 변수에 할당된 값은 바뀌지 않지만, 배열이나 객체가 변수에 할당될 때에는 배열의 값 자체가 아니라 주소가 할당되기 때문이다.
const : 변하지 않는 상수를 선언하는 키워드. 재할당, 재선언 불가능
배열, 객체 : 참조 자료형. 참조 값은 변수에 주소를 할당함(원시 자료형은 변수에 값을 직접 할당함)
원시 자료형은 stack 영역에 값 자체가 저장되지만, 배열, 객체, 함수 등 참조자료형은 heap 영역에 값이 저장되고, stack에는 heap에 저장된 데이터의 주소만 저장함.
실제 heap 내에 저장되어 있는 배열, 객체 내의 요소를 변경하더라도, 참조된 주소는 변하지 않으므로 const 사용이 가능하다.