본문 바로가기

전체 글33

변수와 데이터 타입 (기본형 VS 참조형) 변수란 변경 가능한 데이터가 담길 수 있는 컨테이너다. 여기서 데이터는 string, number, object 등 어떤 자바스크립트 데이터 타입이든 될 수 있다. 변수 선언하기 ES6 이전에는 변수를 선언하려면 var 키워드를 사용해야만 했는데 ES6에서 let, const가 도입되었다. var, let으로 정의된 변수 이름은 camelCase로, const로 정의된 정수 이름은 대문자로 작성하는 관례가 있다. var, let, const를 비교하면 아래 표와 같다. 키워드 스코프 호이스팅 재할당 가능 여부 재선언 가능 여부 var 펑션 스코프 O O O let 블락 스코프 X O X const 블락 스코프 X X X 그렇다면 세 가지 키워드 중에서 뭘 사용해야 할까? 보통 가능한 const를 사용하고.. 2022. 6. 18.
리액트와 리덕스에서 불변성 (Immutability) 이 글은 리액트에서 "불변성을 유지하라"는 말에서부터 시작하게 되었다. 불변성은 무엇인가부터, 리액트와 리덕스에서 불변성을 유지하는 것, 불변성을 유지하며 상태를 업데이트하는 것까지 살펴보고자 한다. 불변성이란? 불변성(Immutanility)은 리액트, 리덕스, 자바스크립트 등지에서 등장하곤 하는 개념이다. 극단적으로 얘기하자면 현재의 변수들을 유지하는 것이 아니라 지속적으로 새로운 값들을 만들어내고 이전 값을 대체하는 것을 의미한다. 몇몇 언어에서는 가변값을 아예 지원하지 않는다. (Erlang, ML 등) 자바스크립트에서 기본형 데이터인 숫자, 문자열, boolean, null, undefined, Symbol은 모두 불변값이다. 참조형 데이터는 기본적으로 가변값이며, Object.definePro.. 2022. 6. 18.
React 18 달라진 점, 업그레이드 검토 지난 3월 말에 리액트 블로그에 React 18을 런칭했다는 소식이 전해졌다. 코드를 최신 상태로 유지관리 하기 위해서는 라이브러리를 지속적으로 업데이트 해줘야 할 것이다. 런칭 이후 3개월 가량이 지난 시점이어서 어느정도 코드 안정화가 됐을 거란 판단 하에 React 17로 작성한 기존 프로젝트를 업그레이드 해보기로 했다. 컨커런트 렌더링 React 18로 버전업이 되면서 가장 핵심적인 키워드는 컨커런트(Concurrent) 렌더링이다. 리액트의 렌더링 메커니즘의 업데이트다. React 18에서 추가된 기능인 Suspense, transitions, streaming server rendering이 컨커런트 렌더링에 의존하고 있다. 컨커런트 렌더링은 리액트가 동시에 다양한 버전의 UI를 준비할 수 있음.. 2022. 6. 14.
스코프와 호이스팅, var/let/const 비교 스코프란 스코프란 현재의 실행 컨텍스트다. 스코프에 따라 변수에 접근할 수 있는지 여부(가시성)가 정해진다. (참고로 자바스크립트에서 객체와 함수는 모두 변수다.) 스코프는 하이어라키 구조로 되어 있어서 자식 스코프는 부모 스코프에 접근할 수 있지만 그 반대는 안된다. 자바스크립트에는 세 가지 타입의 스코프가 있다. 1. 블락 스코프 (Block scope) 2. 펑션 스코프 (Function scope) 3. 글로벌 스코프 (Global scope) 블락 스코프 블락 { }을 기준으로 하는 스코프다. (함수 블락, if문, for 반복문, while 반복문) ES6(2015) 이전에는 없었는데 ES6에서 let과 const 키워드 도입과 함께 블락 스코프가 생기게 되었다. var 키워드로 정의된 변수는.. 2022. 6. 12.