반응형

프로그래밍/javascript 5

자바스크립트 호이스팅(var, 함수)

호이스팅이란, 메모리에 미리 할당하는 것을 의미한다. 자바스크립트에서는 호이스팅이라는 개념이 있지만 호이시팅을 지양하는 분위기다. 호이스팅은 예측하지 못할 결과를 초래할 가능성이 존재하기 때문이다. 호이스팅이 적용되는 경우는 var를 사용하거나 함수 선언을 하는 경우다. 먼저 예측하지 못할 가능성에 대한 예제를 몇가지만 만들어 보려고 한다. console.log(myVariable); // undefined var myVariable = 33; console.log(myVariable); // 33 var 를 사용하게 되면 호이스팅이 되어 위 코드에 선행되어 myVariable의 선언이 먼저 이루어진다. 다음과 같은 코드로 호이스팅을 표현할 수 있겠다. var myVariable; // 선언 consol..

javascript 얕은복사, 깊은복사에 대한 이해

복사는 값의 전달을 목적으로 합니다. 문서를 복사하는 것처럼 컴퓨터 내에서도 파일을 복사하거나 하죠. 컴퓨터 사용 시 흔하게 파일을 복사합니다. 원본이 있을테고 복사한 파일은 원본과 똑같지만 원본은 아닙니다. 그리고 복사본을 수정한다고 해도 원본은 변하지않고 복사본만 수정되겠죠. 위와 같은 방식이 일반적인 사람들이 익숙해져 있는 사고방식입니다. 실제 생활에서의 복사본은 원본과 연결되지 않습니다. 그리고 이 방식을 깊은복사라고 이해해 두시면 되겠습니다. 얕은복사 전에 참조를 먼저 javascript만 공부하신 분이라면 대략 다음과 같이 얕은 복사를 이해 또는 암기하고 계실겁니다. 객체를 얕은복사를 하면 객체의 원소 중 원시타입이 아닌 객체에 대해 참조를 공유한다. 네 이 말은 맞습니다. 하지만 전 이렇게 ..

javascript setter/getter naming convention

기본적인 자바스크립트 객체의 속성에 접근은 아무런 제한없이 이루어지면 속성의 변환도 자유롭다. 이런 자유로운 접근은 간혹 잘못된 입력을하는 등의 실수를 초래한다. 어떤 객체의 속성에 넣을 값의 범위를 알거나 제한할 필요가 있다면 속성에 직접 접근은 제한하여 최대한 안전하게 속성값을 사용하도록 만드는 것이 중요한다. 이런 역할을 하는 것이 setter/getter이다. setter/getter는 대부분의 언어들이 문법적으로 지원하며 사용방법도 비슷한다. 이렇게 setter/getter를 사용하면 속성을 비교적 안전하게 사용하도록 하고 좀 더 정교한 추가적인 처리를 할 수 있다. 이 글에서는 setter/getter를 사용하는 핵심을 객체 리터럴 과 클래스 방식 두가지로 설명한다. 먼저 property를 가..

javascript(typescript) 비구조화 할당과 함수의 keyword argument 다루기

본론에 들어가기 전에 자바스크립트에 대해서 투덜거리고 싶다. 자바스크립트의 생태계는 너무 크다. 웹의 발전에 지대한 역할을 하며 지금까지 건재해왔지만 필자의 견해로는 언젠가는 이 틀을 깨트려야한다고 생각한다. 설명을 하면 너무 길어져서 결론만 말하면 자바스크립트는 너무 생태계가 복잡하다. 타입스크립트는 훌륭하지만 애초에 javascript의 한계를 보완하기 위해 만들었다. 그런데 typescript 또한 제대로 쓰려면 만만한 것이 아니다. 같은 동적 타이핑 언어인 python 진영에는 pydantic이라는 것이다. 지금까지 typescript와 pydantic을 비교해온 결과 pydantic이 더 깔끔하고 사용하기도 편리하다. 이번에 keyword argument를 자바스크립트에서 사용하는 방법을 정리 ..

javascript에서 시간 다루기 moment, new Date()

시간을 생성하고 표시하는 것은 매우 간단하다. 자바스크립트의 경우 new Date(); 를 사용한다. 하지만, 서비스시에 문제가 생기기 마련이다. 시간은 전 세계 공통이 아니다. 한국 시간과 UTC(협정 세계시 또는 GMT) 시간은 9시간의 차이가 있다. 일명 시차라고 하는 이 시간 간격 때문에 우리가 원하는 지역의 시간을 표시하기 위해서는 여러가지 사항을 고려해야한다. 같은 코드를 사용해도 사용하는 플랫폼, 디바이스에 따라서 다른 결과를 표시하기도 한다. 그래서 우리는 UTC시간을 베이스로 두고 지역마다의 시차를 +-로 표시한다. 한국은 +09가 된다. 지역에 따라서 플랫폼에서 사용하는 locale이 다르기 때문에 시간과 locale 두가지를 정확히 알고 적용해야한다. 한국에서는 3시라고 하지만 UTC..

반응형