본문 바로가기

🌼 TIL

🍈 [TIL] require,import? / const

질문 1) require와 import의 차이점을 설명해주세요. 각각 어떤 상황에서 쓸 수 있나요?

 

답변)

두가지 문법 모두 javascript에서 모듈을 불러오는 방식입니다.

둘다 외부의 파일이나 라이브러리의 코드를 불러온다는 같은 목적을 가지고 있지만, 전혀 다른 문법 구조를 지니고 있습니다.

require은 NodeJS에서 사용되는 CommonJS 키워드이고, import는 ES6에서 새롭게 도입된 키워드입니다.

그러므로 import는 ES6이후의 버전에서만 사용이 가능합니다.

두가지의 대표적인 차이점으로 require은 파일에 들어있는 곳에 남아 있으며 import는 항상 맨 위로 이동되어 있습니다.

일반적으로 import는 사용자가 필요한 모듈부분만 선택하고 로드할 수 있기 때문에 더욱 선호하며, require보다 성능이 우수하며 메모리를 절약해줍니다.

또한 require은 모듈을 가져오려면 파일 경로를 지정해야 하며 필요한 모듈을 동기적으로 가져올 수 있습니다.

반면에 improt는 파일 경로가 아닌 모듈 이름을 사용하여 모듈을 가져옵니다. import는 비동기적으로 모듈을 가져오며 export 키워드를 사용하여 모듈에서 함수, 객체 또는 변수를 내보낼 수 있습니다.

따라서 Node.js에서 모듈을 가져올 때는 require를 사용하고, 브라우저에서는 ES6의 모듈 시스템을 사용하여 import를 사용하는 것이 좋습니다.

 

 

 

 


질문 2) 배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해서 설명해주세요.

 

답변)

const로 선언된 배열과 객체는 변경이 불가능하지 않다는 것을 의미하지 않습니다. 단지 변수가 재할당 될 수 없다는 것을 의미합니다.

따라서 객체와 배열의 내용물이 자체적으로 변경 가능한 값이기 때문에 const로 선언된 배열이나 객체의 내부 요소나 속성을 수정하는 것은 가능합니다.
객체의 경우 const로 선언된 객체에 새로운 속성을 추가하거나 기존 속성 값을 변경할 수 있습니다.

하지만, const로 선언된 객체나 배열 전체를 다른 객체나 배열로 대체하는 것은 불가능합니다. 즉, const로 선언된 변수에 다른 객체나 배열을 할당하려고 하면 에러가 발생합니다.
따라서, const는 객체나 배열의 내부 요소나 속성을 수정하는 것은 가능하지만, 객체나 배열 전체를 대체하는 것은 불가능하다는 것을 알 수 있습니다.