목록✏️ 2022. TIL/July (31)
Daehyunii's Dev-blog
오늘은 빌트인 이터러블인 Set과 Map객체에 대해서 배웠다. 둘 다 생성자 함수를 통해 이터러블을 만들며 Set 객체는 배열과 유사하지만 인덱스로 요소에 접근할 수 없고, 요소 순서에 의미가 없으면, 동일한 값을 중복하여 포함할 수 없다는 배열과는 다른 특징을 지니고 있다. 그래서 수학적 집합을 구현하기 위한 자료구조로 사용된다. Map 객체는 객체와 유사하지만 키로 객체를 포함한 모든 값이 올 수 있고 일반 객체와는 다르게 이터러블이다. Set과 Map 객체를 공부하면서 Set과 Map객체의 존재와 특징들에 대해서는 알 수 있었지만, 사실 공부를 하면서도 '이걸 도대체 어디에 사용하는거지?' 라는 생각이 많이 들었다. 'Set 객체가 배열과 유사하다면 배열을 사용하면 될 일이고, Map 객체가 객체와..
오늘은 디스트럭처링 할당에 대해서 공부했다. 많은 양은 아니었기에 공부하는데 크게 어려움은 없었다. 디스트럭처링 할당은 크게 배열 디스트럭처링 할당과 객체 디스트럭처링 할당으로 나눌 수 있다. 디스트럭처링은 배열과 같은 이터러블이나 객체를 비구조화하여 변수에 개별적으로 할당하는 것이다. 배열 디스트럭처링 할당은 우변의 이터러블을 변수에 할당하는 것이고, 객체 디스트럭처링 할당은 우변의 객체의 프로퍼티 값을 변수에 할당 하는 것이다. 결국 디스트럭처링 할당은 배열이나 객체 내의 특정 요소나 값을 추출하여 변수에 할당하고 싶을 때 유용하게 활용할 수 있다. 사실 배열이나 객체에서 필요한 특정 요소나 값을 따로 변수에 할당하는 것은 복잡한 코드는 아니지만, 디스트럭처링 할당을 활용하면 여러 개의 요소나 값을 ..
오늘은 스프레드 문법에 대해서 공부했다. 일단 스프레드 문법을 공부하면서 느낀점은 단 한가지였다. '편리하다!' 굉장히 직관적이고 편리하다라는 생각이 들었다. 우선 스프레드 문법은 이터러블을 대상으로 사용할 수 있으며 값이 아닌 값의 목록이다. 값이 아니기 때문에 변수에 할당할 수 없다. 그래서 스프레드 문법은 함수 호출문의 인수목록, 배열 리터럴 내, 객체 리터럴 내에서 사용할 수 있다. 스프레드라는 단어 뜻 그대로 이터러블의 값들을 펼쳐서 활용할 수 있다. 스프레드 문법 도입 이전에는 메서드들을 이용해서 하나 하나 활용해야 했다면, 스프레드 문법을 통해서 여러 메스드들을 사용할 필요없이 직관적으로 코드를 작성할 수 있게 되었다. 그리고 한 가지 더 특이한 점은 객체 리터럴 내에서도 객체를 대상으로 스..
오늘은 이터러블에 대해서 공부했다. 이터러블은 말 그대로 '반복 가능한' 이라는 뜻을 가지고 있다. 반복이 가능하다는 말은 순회할 수 있다는 의미인데, 오늘 처음 알게된 사실은 ES6 이전에는 명확한 기준이 없었다 라는 것이다. 그렇다면 ES6 이전에는 각종 반복문과 메서드를 통해서 다양한 방법으로 순회했다는 것인데, 이는 매우 번잡하고 개발자마다 익숙하게 사용하는 코드가 달라 매우 혼란스러웠을 것 같다. 하지만 이터레이션 프로토콜을 통해 무질서한 개념들이 질서정연하게 바뀐 것 같다. 사실 오늘 배운 내용들에 대해서 100% 이해하지 못했다. 이해한 부분은 이터레이션 프로토콜을 통해서 통일시켰고, 이터러블들은 for...of 문과 스프레드 문법 그리고 배열 디스트럭처링 할당의 대상이 된다는 것이다. 또한..
오늘 공부한 내용은 String 생성자 함수에 대해서 배웠다. String 생성자 함수는 Number 생성자 함수와 마찬가지로 조금은 쉬어가는 타임이 아닌가 싶다. 우선 String 객체에 대해서 가장 중요한 것은 유사 배열 객체이자 이터러블이라는 특징을 가지고 있다는 것을 정확하게 알고 있어야 할 것 같다. 유사 배열 객체로 length 프로퍼티를 가지며, 인덱스를 통해 문자열의 각 문자들에 접근 할 수 있다. 이터러블에 대해서는 아직 자세하게 배우지는 않았지만 for..of문을 통해 반복이 가능하다는 것 정도 알고 있다. 하지만 문자열은 원시타입의 값이므로 인덱스를 통해 문자열의 문자를 변경하려고 하더라도 변경되지 않는다. 이러한 유사 배열 객체로서의 특징은 원시 값 중 문자열만의 특징이고, 이러한 ..
오늘은 Number 생성자 함수에 대해서 배웠다. 사실 오늘은 조금 쉬어가는 타임이 아니었다 싶긴 하다. 하지만 완전히 느낄점이 없었던 것은 아니었다. 자바스크립트는 프로토타입 기반의 객체지향 프로그래밍 언어라는 것을 여기서도 느낄 수 있는 부분이 아닌가 하고 생각이 들었다. 왜냐하면 숫자 값은 사실 원시타입의 값으로 변경 불가능한 값인데, Number라는 생성자 함수를 빌트인 객체로 넣어놨고, 이를 통해 숫자 객체를 만들 수 있게 해놓은 것 자체가 객체를 지향하고 있다는 뜻이 아닐까 하고 말이다. 또 숫자와 관련된 내용들은 코드를 작성할때 제어문에 있어서 조금 더 유용하게 활용할 수 있을것 같다는 생각이 들었다. 물론 지금은 프로토타입 메서드와 정적 메서드들에 익숙하지 않고 활용방법도 잘 알지 못하지만..
오늘은 중요한 객체 중 하나인 배열에 대해서 배웠다. 배열은 파이썬에서 한 번 공부를 해서 그런지 상대적으로 그렇게 어렵게 느껴지지는 않았다. 또한 앞에서 배운 객체와 관련된 내용들을 보고 왔기에 표현만 다르게 했을뿐 순서와 길이라는 특징적인 부분을 제외한다면 객체와 크게 다르다고 느껴지지는 않았다. 오히려 수 많은 프로퍼티 메서드와 정적 메서드들이 많이 곤욕스러웠던것 같았다. 이걸 외운다는것은 현실적으로 매우 어렵게 느껴졌고, 처음에는 스트레스를 받았으나 룸메이트인 개발자 지인에게 물어보니 지금 당장은 크게 신경쓸 부분이 아니라는 조언을 얻고 개념을 익히는데 전념했다. 배열을 보면서 사실 딱히 느끼는 점은 없었다. 다만 자바스크립트의 배열은 일반적으로 말하는 배열이 아니라는 것은 다시 말하면 다른 언어..
오늘은 ES6 버전부터 등장한 함수에 대해서 배웠다. 대표적으로 ES6 메서드 축약 표현과 화살표 함수에 대해서 배웠고, 가변 인자 함수를 구현하는 Rest 파라미터와 매개변수 기본값에 대해서도 배웠다. 우선 함수를 명확하게 구분지어서 문법을 달리하는 것은 굉장히 긍정적인 발전이라고 생각한다. 사실 공부를 하는 입장에서도 굉장히 헷갈리는 부분이었다. 함수 자체가 호출되는 방식에 따라 일반 함수도 되었다가 메서드도 되었다가 생성자 함수도 되었기 때문에 혼란을 많이 야기했었다. 그러나 메서드 축약 표현을 통해서 개념들을 명확히 할 수 있어서 너무 좋았다. 일반적으로 메서드라고 부르는 함수들은 생성자 함수로 사용할 이유가 거의 없을텐데도 constructor이고 prototype프로퍼티를 가지며 프로토타입을 ..