📌require와 import차이점을 설명해주세요. 각각 어떤 상황에서 쓸 수 있나요?
- 둘 다 모듈 키워드. 외부 파일이나 라이브러리를 불러올 때 사용
- Babel같은 ES6 코드 변환 도구를 사용할 수 없다면 require 키워드를 사용해야함
- require
- NodeJs에서 사용되고 있는 CommonJS 키워드
- Ruby 언어 스타일과 비슷함
- 파일에 들어있는 곳에 남아있음
- 프로그램의 어느 지점에서나 호출 할 수 있음
- 특정 변수나 그 변수의 속성으로 내보낼 객체를 세팅해줘야 함.
- 여러개의 객체를 내보낼 경우 -> export.변수의 개별 속성으로 할당,
딱 하나의 객체를 내보낼 경우 -> module.exports = 객체 자체에 할당. - require로 가져오고, esports/module.exports로 내보낸다.
- import
- ES6에서 새롭게 도입된 키워드
- Java나 Python 언어 방식과 비슷함
- 항상 맨 위로 이동
- 파일의 시작 부분에서만 실행할 수 있음, 그러나 import 전용 비동기 문법으로 파일 중간에 모듈을 불러올 수 있음
- 사용자가 필요한 모듈 부분만 선택하고 로드할 수 있어서 더 선호하며,
require에 비해 성능이 우수하며 메모리 절약. - import로 가져오고, export/export defaults로 내보낸다.
💡참고
📌배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해서 설명해주세요
- 배열, 객체는 참조자료형으로, heap에 데이터가 담기고 stack에는 heap에 담긴 데이터의 주소가 담긴다.
- 즉, 주소를 참조해 값을 가져온다.
- 실제 배열 요소들은 push나 pop으로 변경이 가능하고 참조된 주소는 변경되지 않으므로 const 사용이 가능!
💡참고