공부/JS6 순수함수란? 불변성과 사이드 이펙트와 연결하여 설명해주세요. 순수함수란? 같은 입력에 대해 같은 결과를 return하는 함수. 함수의 바깥 영역에 side effect를 초래하지 않는 함수. (함수 외부 데이터나 전달된 데이터를 변경하지않는 함수.) → 기존 목적과 다른 효과를 만들지 말아야 함. 순수 함수의 예 function add(a, b) { return a + b; } 순수하지 않은 함수의 예 let count = 0; function increment() { count++; return count; } // count라는 변수를 증가시키고 새 값을 반환함. function getRandomNumber() { return Math.random(); } // 호출될 때마다 0과 1사이 난수를 반환함. 순수함수의 장점 코드 디버그, 테스트 및 유지 용이 외부.. 2023. 4. 5. 배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유 답변 배열이나 객체가 const로 선언되면 변수가 배열이나 객체가 저장된 고정된 메모리 위치를 가리킨다. 배열 또는 개체에 대한 참조는 변경할 수 없지만 배열또는 개체 내의 요소 또는 속성은 여전히 수정할 수 있다. const 예시 - push() 메서드는 배열 끝에 새 요소를 추가하는 데 사용됨. - const가 arr 변수의 재할당만 제한하고 그 내용은 제한하지 않기 때문에 허용됨. const arr = [1, 2, 3]; arr.push(4); console.log(arr); // Output: [1, 2, 3, 4] const obj = {a: 1, b: 2}; obj.c = 3; console.log(obj); // Output: {a: 1, b: 2, c: 3} 참고 : https://velo.. 2023. 4. 3. require와 import의 차이점 답변 require와 import는 외부 파일이나 라이브러리를 불러올 때 사용한다는 같은 목적을 가지고 있지만, 다른 문법구조를 가지고 있다. require는 export와 함께 사용되며 어느 지점에서나 호출 할 수 있고 동기적이다. NodeJS에서 사용되는 CommonJS의 키워드이며 import export와 함께 사용되고 파일의 시작 부분에서만 실행 할 수 있고 비동기적이다. 또한 ES6에서 새롭게 도입된 키워드로서 차이점이 있다. require은 Babel과 같은 ES6코드를 변환해주는 도구를 사용할 수 없는 상황에서 사용한다. import는 JavaScript를 사용 중이거나 ES6 모듈에 대한 액세스 권한이 있는 경우에 사용한다. 바벨이란? 바벨이란 ES6+버전의 자바스크립트, 타입스크립트, .. 2023. 4. 3. this가 동작하는 원리와 용법 - 함수를 호출할 때 생성되는 실행 컨텍스트 객체 (현재 실행중인 함수의 객체를 참조) - This의 값은 함수를 호출하는 방법에 의해 결정됨. - 호출한 놈(객체) === This - 함수가 호출될 때마다 This가 가리키는 개체가 동적으로 결정되는 것 === This가 그 객체에 "바인딩"된다. - bind 메서드를 사용하면 함수가 어떻게 호출되었는지와 무관하게 This를 고정할 수 있음. 일반함수 - 해당 함수를 어떻게 호출하는지에 따라 동적으로 결정됨. - 일반 함수 호출 -> Global. - 메소드 호출 -> 메서드를 호출한 주체. - 생성자 함수 호출 -> 생성자 함수의 반환 값인 인스턴스 객체. - apply/call/bind 호출 -> 해당 함수의 매개변수로 사용된 인자. - 상단 세 가.. 2023. 3. 31. parameter와 argument parameter(매개변수) - 함수 정의에서 선언되는 변수. - 함수 바디 내에서 사용. // a와 b는 parameter function add(a, b) { return a + b; } argument(인자) - 함수를 호출할 때 전달하는 값. - 전달된 값은 함수 내에서 parameter에 할당됨. // add 함수 호출 시 2와 3은 argument // 2와 3은 add 함수에서 a와 b parameter에 각각 할당됨 var sum = add(2, 3); 참고 : https://divheer.tistory.com/186 2023. 3. 28. Hoisting과 TDZ 호이스팅(Hoisting) 이란? - 코드가 실행되기 전 변수/함수의 선언이 해당 스코프의 최상단으로 끌어올려진 것 같은 현상. - 코드 실행 전에 선언된 변수/함수를 사용할 수 있게 해주는 기능. - var, let, const 세 가지 모두 최상위로 호이스팅된다. 그러나 var 변수만 선언과 동시에 undefined 로 초기화되고 let과 const 변수는 선언 단계까지만 진행되고 초기화되지 않는다. - 함수 선언문은 그 자체로 호이스팅 대상이 되지만 함수 표현식은 변수명 부분만 호이스팅 된다. - 함수 선언문/표현식 예시 코드 // 함수 선언문 - 함수 전체가 호이스팅된다 function sum (a, b) { return a + b; } // 함수 표현식 - 변수명 부분만 호이스팅된다 (var m.. 2023. 3. 28. 이전 1 다음