728x90

Dev/JavaScript 21

[JavaScript] BigInt

요즘 하반기 공채시즌이 열려서 중고신입 개발자 뽑는 공채에 미친듯이 지원을 하고 있다. 당연히 신입공채기 때문에 코딩테스트에 응시를 해야하는 경우가 대부분이라 요즘 코테 공부에 심혈을 기울이고 있다. 그러다 오늘 생각도 안했던 문제를 발견해서 기록을 남겨둔다. Number 지금껏 내가 착각하고 있었던게 있는데, Java를 기준으로 생각해서 착각했던것 같다. 다들 알다시피 Int타입에는 메모리적으로 한계가 있다. 이런 한계를 극복하고자 한다면 Long이나 BigDecimal을 사용하는 방향을 채택했었는데 이것만 생각하다보니 자바스크립트의 원시타입중에 하나인 Number는 걍 다 되는 줄 알았다. 왜냐면 숫자를 표현하는 타입이 저거뿐인줄 알았으니까... 근데 놀랍게도 이 Number 타입도 한계가 있다. 찾..

Dev/JavaScript 2023.07.25

[JavaScript] Symbol

이번엔 Symbol에 대한 이야기를 할건데, 이게 진짜 난 도저히 엇다써야할지 감이 안 잡혀서 이해가 좀 힘들었다. 그냥 아무리 생각해도 ES6로 넘어오면서 언어 자체에 들어가있는 built-in 기능들을 위한 타입이지 않나? 정도 밖엔 감을 못잡았는데, 대충 정리해보면 그래도 JS 개발자가 조금씩 사용할 수 있는 것들이 존재하긴한다. 또한, 우리가 당연하게 사용하고 있던 것들 역시 Symbol로 정의 되어있기 때문에 알고 있으면 JS에 대한 깊은 이해에도 도움이 될 것으로 생각한다. 1. Symbol이란? Symbol은 ES6부터 JavaScript에 추가된 타입으로, 좀 특이한 녀석이다. 사용의 목적은 Property들의 충돌을 방지하기 위해 고유한 Property를 만드는 용도로 사용된다. 이런 식..

Dev/JavaScript 2023.07.17

[JavaScript] iterable / iterator

오늘은 iterable(이터러블), iterator(이터레이터)에 대한 이야기를 한번 해볼건데, 배열이나, Map과 같은 순회가능한 객체들을 다룬다면 이 개념에 대한 이해를 가지고 있는 편이 좋다. 대부분 학원에서는 for / while문을 사용하면 요소하나하나 꺼내쓸 수 있다. 이렇게만 가르쳐주게 되는데, 이게 그냥 초반 입문 시기나 개발을 취미로 하는 입장에서는 전혀 문제될게 없으나 좀 더 전문적인 영역으로 진출하고자 하는 인재들에게는 이 개념의 존재를 알고 있는게 차후 Object에서 Custom Iterator를 적용한다던가 같은 응용이 가능하기 때문에 기왕이면 학습해두길 권하고 싶다. 1. Iterable Protocol & Iterator Protocol 왜 또 Protocol같은 거슬리는 워..

Dev/JavaScript 2023.07.17

[JavaScript] Wrapper Object

이번에 살펴볼 이야기는 Wrapper Object인데, 이건 솔직히 내용이 많지 않을 것 같다. 근데 굳이 설명하는 이유는 알고 있으면 나중에 나올 얘기들에도 어쨌든 바로 떠올릴 수 있기 때문인거라, 짧게 정리하고 넘어가도록 하겠다. Wrapper Object (래퍼 객체) Wrapper 객체가 뭔지 설명하기 전에, 원시타입에 대한 이야기를 할건데, 기본적으로 Object.prototype을 상속하고 있는 모든 객체들은 생성자를 통한 객체 생성을 할 수가 있다. 근데 원시타입은 Object가 없는데 어떻게 생성자를 통한 객체 생성이 가능한지 의문이 들거다. 예를 들면 아래와 같은 코드들임. const str = new String(); const num = new Number(); const bool =..

Dev/JavaScript 2023.07.13

[JavaScript] ProtoType (2)

저번에 정리하다가 만 ProtoType에 대한 정리를 오늘 마칠 셈인데, 아무래도 분량이 꽤나 되다보니 어느정도 축약을 할 내용이다. 사실상 대부분의 내용이 논리적으로 당연한 내용들이라고 볼 수 있기 때문에, 꼭 필요하다 싶은 개념정도만 정리해두고 나중에 필요하면 내용을 추가하는 방식이 될 것 같다. ProtoType Chain 앞선 ProtoType(1) 게시물의 링크를 걸어두겠다. 2023.07.05 - [Dev/JavaScript] - [JavaScript] ProtoType (1) [JavaScript] ProtoType (1) 대망의 ProtoType이다. 대부분 학원 출신 개발자들은 Java를 통해 개발에 입문을 하는 케이스가 많다보니, 아무래도 Class 기반의 객체를 익숙하게 여길텐데, 놀..

Dev/JavaScript 2023.07.13

[JavaScript] ProtoType (1)

대망의 ProtoType이다. 대부분 학원 출신 개발자들은 Java를 통해 개발에 입문을 하는 케이스가 많다보니, 아무래도 Class 기반의 객체를 익숙하게 여길텐데, 놀랍게도 이 방식대로 자바스크립트에 접근했다가는 머리통이 아픈 순간이 찾아온다. '아니 뭔소리냐? 자바스크립트도 class라는 문법이 있는데, class기반이 아니라니?' 라고 할 수도 있는데, 그건 ES6 시점에서 문법이 추가된거고, 또한 저 class역시 자바에서 말하는 class와는 다르다. 자 그럼 이 prototype이라는게 뭔지 한번 시작해보도록 하자. 1. ProtoType? 자바스크립트의 요소들은 대부분 객체다. Object 뿐만 아니라 String, Array, Number.. 등등 모두 객체인데, 기존의 자바에서 알고 있..

Dev/JavaScript 2023.07.05

[JavaScript] this

이어서 바로 this 얘기를 할건데 왜 이렇게 급하게 쓰냐면 앞에 글에서는 객체지향 어쩌고 얘길 했지만, 그 객체지향 프로그래밍할 때의 this랑 이 자바스크립트에서 얘기하는 this랑 진짜 지랄맞게 다르다. 자바같은 언어에서 this를 사용하는걸 보면 진짜 명확하게 언제나 객체 자기 자신을 지칭하는 의미로만 사용하고 있는데 자바스크립트는 얘가 어떤 함수 내에 들어있다가 호출 되는지 그 방법에 따라 다르다.. 어이가 없다.. 그래서 이제 나 같은 애들이 this 좀 쓸 줄 안다고 깔짝 대다가 삽질 엄청나게 하는걸 볼 수 있는데, 이거 제대로 생각하면서 쓰면 괜찮으니까 일단 한번 알아보자. 자바스크립트 함수를 호출하는 방법에 따라 달라지는 this 자바스크립트 함수는 호출하는 방법이 네가지가 있다. 1. ..

Dev/JavaScript 2023.06.29

[JavaScript] 생성자 함수

요 근래 자바스크립트 함수에 대해서 상당히 아주 많은 신경을 쓰고 있는데, 왜냐면 이 놈의 자바스크립트 함수라는게 다른 언어의 함수들과 비교하면 상당히 독특하다보니 별 희한한 케이스가 많다. 그래서 오늘은 생성자 함수 얘기를 한번 꺼내볼까 하는데, 한번 시작해보자. 이 얘기를 하기 전에 this 에 대한 이야기도 필요할듯하니 그것도 설명하겠다. 1. this 원래 뇌구조 상 프로그래밍이란걸 할 수 없는 대부분의 사람들이 프로그래밍을 할 수 있게 만들어준 개념이 객체지향 프로그래밍이라고 생각하는데, 일단 오늘 이 객체지향 얘기하면 개판나니까 나중에 얘기하고 객체지향 프로그래밍을 배우면 아주 자연스럽게 this라는 개념을 학습한다. this는 본래 object(객체) 내부에서 객체 본인을 지칭하는 자기 참조..

Dev/JavaScript 2023.06.29

[JavaScript] 정규표현식

학원에서 가르치는 내용 중에 정규표현식이라는게 있다. 특정 타입의 데이터가 들어갈 수 있음을 의미하는 식을 통해서 해당하는 값을 찾는다던가, 제한하거나 이런 행위를 하기 위해 주로 사용하는데 아무래도 생겨먹은게 귀찮게 생겼다보니 이걸 통해 해결하기보단 다른 방법을 자꾸 모색하게 된다. 근데 요즘 Vanilla JS 개발 연습하면서 도저히 안쓰고는 못배기겠다 싶은 순간이 찾아와 정리할 때가 온 것 같아 일단 정리한번 해두고 넘어가려고 한다. 1. 정규표현식이란? 프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규식이라고도 부르며, 보통 RegEx 혹은 RegExp라 많이 쓴다. - 출처 : 나무위키 - 일단 모든 언어들이 정규표현식을 사용할 수 있도록 환경이..

Dev/JavaScript 2023.06.28

[JavaScript] JavaScript RunTime

오늘은 자바스크립트 런타임에 대한 이야기다. 원래 생각도 안하고 있었는데, 런타임에 이런이런 에러가 생길 수도 있다. 같은 얘기는 많이 했지만 그래서 런타임이 뭔지는 얘기를 안했어서 한번 이야기 해볼까 한다. 조금 어렵게 들릴 수도 있지만 일단 한번 시작해보자. 1. 스레드 (Thread) 오늘 얘기할 JavaScript의 런타임을 얘기하려고 하면, 이 스레드라는 개념에 대해서 확실히 정리가 되어있어야한다. 그리고 이걸 이해하기 위해선 큐, 스택, 힙이 뭔지에 대해서도 알고 있어야하는데 일단 큐, 스택은 설명을 해둔게 있으니 그걸 보면 될 것 같고, heap은 조만간 정리해서 올려두도록 하겠다. 2023.04.17 - [Dev/Algorithm] - [Algorithm] 큐와 스택(Queue, Stack..

Dev/JavaScript 2023.06.27
728x90