자바스크립트에서 return문을 생략해도 되는 경우와 활용 방법
2023. 5. 3. 10:42
개발이야기/JS
앞 포스팅에서는 map() 함수를 할때 return문의 유무에 대해서 알아보았습니다. 중괄호를 사용하면서 return 키워드를 생략하는 경우, 함수는 값을 반환하지 않고 기본적으로 undefined를 반환한다고 했습니다. 이 경우는 해당 함수에서 값을 반환하는 것이 중요하지 않을 때 유용합니다. 예를들어 다음과 같은 상황에서는 return문을 생략하고 기본적으로 undefined를 반환하는 것이 적절합니다. //예제1 function MyComponent() { const [count, setCount] = useState(0); useEffect(() => { setInterval(() => { setCount(count + 1); }, 1000); }, []); return ( {count} ); }..
[JS] 스코프 체인
2022. 8. 17. 17:13
개발이야기/JS
스코프 체인에 대해서 살펴보자. 스코프 체인을 알기전에 우리는 '스코프' 를 명확히 알아야 한다. 스코프란? 스코프는 변수명에 대한 유효범위이다. ⇒ 외부에서 선언한 변수는 외부 뿐 아니라 내부에서도 접근이 가능하지만 내부에서 선언된 변수는 오직 내부에서만 접근할 수 있다. 자바스크립트 es6 문법에서는 let과 const의 등장으로 블록에 의해서도 스코프 경계가 발생하게 함으로써 다른 언어와 비슷해졌다. 다만 이러한 블록은 var로 선언한 변수에 대해서는 작용하지 않고, 오직 let, const, strict mode에서의 함수 선언 등에 대해서만 범위로서의 역할을 수행한다. es6에서는 이 둘의 구분을 위해서 함수 스코프, 블록 스코프라는 말을 사용한다. (함수 스코프, 블록 스코프에 대해서는 var..
[JS] var, let, const 차이점
2022. 8. 17. 15:33
개발이야기/JS
var 함수 스코프를 가지고 있다. var는 함수 내부에서 선언했을때만 지역변수로 사용되고, 함수를 제외한 영역에서 var는 전역변수로 사용된다. 중복 선언도 가능하기때문에 같은 변수명을 사용해도 에러가 나지않는 경우가 발생하여 var는 사용을 하지 않는 것을 권장한다. function age(){ var a = 10; //이것만 지역변수 console.log(a); // 10 } age(); console.log(a); // error if(true) { var a = 10; console.log(a); // 10 } console.log(a); // 10 함수가 아니라서 var는 전역변수로 취급된다. 내부에서 선언된 변수에 외부접근이 가능하다. let, const 블록 스코프를 가지고 있다. let,..
[JS] null과 undefined의 차이점
2022. 8. 11. 23:10
개발이야기/JS
undefined는 선언은 되었지만 값이 들어있지 않는 상태이다. 자바스크립트 엔진은 사용자가 어떤 값을 지정할 것이라고 예상되는 상황임에도 그렇게 하지 않았을때 undefined를 반환하고. 다음 두가지가 이에 해당된다. 객체 내부의 존재하지 않는 프로퍼티로 접근할 때, 리턴문이 없거나 호출되지 않는 함수의 실행 결과일 때, undefined를 반환한다. null 은 사용자가 명시적으로 값이 없음을 표현할 때 사용한다.
[JS] 기본형 데이터와 참조형 데이터
2022. 7. 1. 04:53
개발이야기/JS
자바스크립트의 데이터 종류에는 크게 두가지로 기본형과 참조형 데이터가 있다. 기본형 데이터 string number boolean undefined null ES6 부터 추가된 symbol 기본형 데이터는 불변성인데 불변성이라는것은 한번 만든 데이터의 값은 다른 값으로 변경할 수 없는 것을 말한다. 만약 기본형 데이터가 변경된다면 그건 데이터를 아에 새로 만드는 동작이고, 한 번 만들어진 값은 가비지 컬렉팅(GC)을 당하지 않는 한 영원히 변하지 않는다. 기본형 데이터는 재할당시 기존 값이 달라지는 것처럼 보이지만, 기존의 값이 달라지는 것이 아닌 새로운 데이터 영역에 재할당한 값을 저장하고, 재할당한 주소값을 변수영역에 연결해주는 것이다. 결국 기존의 데이터 영역이 변하는 것이 아니고 새롭게 재할당한 ..