이번 글에서는 자바스크립트의 filter() 함수를 직접 만들어보겠습니다. 가벼운 내용이지만 자바스크립트가 가진 filter() 함수를 구현해본다면 이전보다 filter() 함수에 대해 잘 이해할 수 있을 뿐만 아니라 함수형 프로그래밍이 가진 멋진 장점을 알 수 있습니다. filter()를 사용하는 이유 filter() 함수는 의미 그대로 "거르다"를 하기 위해 정의된 함수입니다. 예를 들어 특정 사용자 데이터(이름, 나이)가 주어지고 그중에서 특정 조건을 만족하는 대상들을 찾는 경우에 filter()를 사용할 수 있습니다. 선언적인 프로그래밍 방식으로 이 문제를 해결한다면 for문 혹은 while문을 사용해서 다음과 같은 방식으로 코드를 작성할 수 있습니다. const users = [ { name: ..
객체지향 프로그래밍과 함수형 프로그래밍의 차이가 무엇이고 어떤 프로그래밍이 좋은 방법인 걸까요. 객체지향 프로그래밍이 좋다? 함수형이 좋다? 재미있게도 최근의 프로그래밍 언어들을 보면 함수형 프로그래밍은 객체지향 프로그래밍의 패러다임을 따라가고 객체지향 프로그래밍은 함수형 프로그래밍 패러다임을 따라갑니다. 프로그래밍 방식이 저마다의 장단점을 지니고 있기 때문에 이런 현상이 일어난다고 생각합니다. 결국 어떤 프로그래밍이 좋다고 단정 짓기는 어렵습니다. 객체지향 프로그래밍과 함수형 프로그래밍 사이에서 어떤 프로그래밍 방식이 좋다는 결론을 내리지 못해도 적어도 두 프로그래밍 방식 간의 차이는 알고 있는 게 좋습니다. 자바스크립트를 사용하면 손쉽게 객체지향이나 함수형 프로그래밍을 할 수 있습니다. 오늘은 간단한..
자바스크립트에서 typeof란 판별하려고 하는 대상의 값이 기본 타입인지 아니면 함수인지 혹은 객체인지 구체적으로 값을 식별하는 연산자입니다. 이전에도 typeof 연산자에 대해 이야기를 한 적이 있는데요. 오늘은 이전 내용을 조금 더 보충하기 위해 이 글을 작성하였습니다. 그림으로 보는 typeof 연산자 - 타입 연산자 typeof를 이용해서 판별할 수 있는 값의 타입은 숫자, 참 혹은 거짓, 문자열, 함수, 객체입니다. typeof 연산자로는 null을 구분할 수 없기 때문에 데이터의 타입을 식별하기 위해서는 먼저 "==" 연산자를 이용하는 게 좋습니다. 그런 이유로 앞서 정의한 순서도에서도 값을 구분하기 전에 식별하는 값의 null 여부를 판별합니다. 값이 null도 아니고 undefined도 아..
자바스크립트를 통해 사용자의 위치 정보를 알아내는 방법은 Geolocation를 사용하는 것입니다. Geolocation API는 사용자의 현재 위치를 가져오는 API로 주로 사용자 위치를 지도에 표시할 때 사용하거나 사용자 위치 기반의 서비스를 제공하는 경우에 사용됩니다. 또한 사용자의 위치 데이터는 개인 정보와 관련되어 있기 때문에 사용자의 동의 없이는 사용할 수가 없습니다. 이번 글에서는 Geolocation을 이용해서 사용자의 위치를 일회성 혹은 실시간으로 확인하는 방법에 대해 알아보도록 하겠습니다. 사용자의 위치를 확인하는 방법 geolocation를 이용해 사용자의 위치를 확인하는 방법은 간단합니다. getCurrentPosition()을 이용해 성공, 실패 콜백 함수를 등록하면 됩니다. 사용..
자바스크립트의 eval() 함수는 문자열로 이루어진 스크립트 코드를 실행하는 함수입니다. 그렇기 때문에 eval()을 잘 활용하면 동적으로 Javascript 실행문을 만들어서 실행할 수도 있지만, 보안에 취약하다는 문제점도 있는데요. 오늘은 eval()의 사용방법을 통해 어떤 점이 좋고 나쁜지 알아보도록 하겠습니다. 문자를 실행시키는 eval() console.log('2 + 2'); // output: '2 + 2' 일반적으로 함수의 매개변수로 문자 값을 사용하면 문자 리터럴로 인식되고 있는 리터럴로 사용됩니다. 위의 예제처럼 말이죠. 하지만 eval()을 사용하면 재미있는 결과를 만들어 낼 수 있습니다. console.log(eval('2 + 2')); // output: 4 eval()은 매개변수..
순수 함수(Pure Function)란 무엇일까요? 순수 함수에 대한 정의를 내리자면 동일한 인자가 전달되면 항상 동일한 결과를 반환하는 함수(코드 블록)입니다. 함수라면 당연한 거 아니냐 라고 생각하실 수 있지만 가장 기초적이면서 지키기 어려운 개발이 순수 함수를 만들고 그 함수들을 조합해 확장성, 재사용성을 높이는 코드를 작성하는 것입니다. 오늘은 자바스크립트를 통해 함수형 프로그래밍을 하는데에 있어 쉽지만 지키기는 순수 함수에 대해 이야기해볼까 합니다. 막상 내일 책상 앞에서는 일정에 쫓겨 잊겠지만, 적어도 오늘보다는 멋진 프로그래밍을 할 수 있기를 바라보면서 말이죠 순수 함수의 정의 - Pure Function 순수 함수의 정의는 서문에서 말한 것과 같이 동일한 매개변수가 주어지면 항상 동일한 결..
Promise를 한 마디로 정의한다면 비동기 작업을 나타내는 객체입니다. 조금 더 풀어서 설명하면 비동기 작업을 쉽게 사용할 수 있도록 적의 된 객체입니다. Promise는 ES6(ES2015)에 표준으로 등록된 사양이고, 모던한 Javascript에서는 가진 역할과 책임이 더 중요해졌습니다. 그럼 이번 글에서는 콜백 지옥(Callback hell)을 벗어나는 방법을 통해 Promise가 가진 장점을 알아보도록 하겠습니다. Promise를 사용하는 방법 먼저 콜백 지옥을 벗어나는 방법을 알아보기 전에 Promise의 사용 방식을 알아보려고 합니다. Promise의 사용 방식은 생각보다 중요한데요. 그 이유는 바로 Promise는 비동기에 Callback을 전달하지 않고 첨부하기 때문입니다. 말로는 이해하..
일반적으로 Javascript의 배열의 요소에 접근하는 경우 index를 사용합니다. 예를 들면 array.length를 사용해서 말이죠. 하지만 at()라는 함수를 사용하면 조금 더 멋진 방법으로 배열(Array)의 요소를 다룰 수 있습니다. 이번에는 at()을 이용해 index 없이 배열을 사용하는 방법에 대해 알아보겠습니다. index를 이용한 배열 요소 접근 방법 배열의 요소에 접근하는 방법으로 주로 사용되는 방법은 바로 index를 사용하는 방법입니다. index는 위치를 기준으로 정의된 값입니다. 배열에서의 index는 배열 시작으로부터 몇 번째에 위치하느냐를 가리키는 위치 값입니다. 그렇기 때문에 배열의 첫 번째 요소를 가리키는 경우 index의 값으로 0을 사용합니다. const numbe..
HTTP 쿠키는 웹 브라우저에 저장되는 작은 크기의 문자열로, HTTP 통신을 할 때 값을 주고받을 수 있도록 만들어진 보조적인 수단입니다. 기본적으로 HTTP 프로토콜은 상태가 없으며(stateless), 제한적이지만 쿠키를 이용해 값들을 주고받을 수 있게 정의된 개념입니다. 정확한 명세는 RFC 6265에 정의되어 있습니다. HTTP 쿠키의 정의를 알아보자. 쿠키(Cookie)는 브라우저와 서버 간에 지속적으로 유지할 수 있는 데이터를 제공함으로써, 상태를 가질 수 있도록 하는 HTTP 상태 관리 개념입니다. 쿠키는 주로 웹 서버에 의해 만들어집니다. 서버가 HTTP 응답 헤더(header)의 Set-Cookie에 내용을 넣어 전달하면, 브라우저는 전달받은 내용(데이터)을 저장하는데 이를 쿠키라고 이..
바닐라 자바스크립트 (Vanilla Javascript)는 과연 무엇일까? 그리고 왜 필요한 걸까? 이 질문에 대해서 대답하기 위해서는 최근의 자바스크립트가 아니라 이전의 웹 생태계와 그 안에 있던 자바스크립트를 이해할 필요가 있다. 완전히 같다고는 이야기할 수 없지만 Java에 빗대어 보면 POJO (Plain Old Java Object)와 비슷한 맥락을 가지고 있다고 생각한다. 먼저 바닐라 스크립트가 어떤 것인지 알아보자 - Vanilla Javscript Vanilla JS is a fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications. 바닐라 JS는 빠르고 가벼운 크로..
이번에는 디바운스(debounce) 혹은 디바운싱(debouncing)이라고 불리는 개념을 알아보도록 하겠습니다. 이 글에서는 debounce라는 단어를 사용하여 개념을 설명합니다. Debounce의 개념 debounce는 한 문장으로 요약정리하면 처리해야 하는 일들을 미루어두었다가 한 번에 실행하는 방법을 말합니다. 의미 그대로 하나의 방법이기 때문에 표현하는 방법이나 설명하는 방식은 여러 형태로 존재하지만, 단순히 이벤트 핸들러 혹은 이벤트 처리하는 기술에 국한되는 것이 아니라 포괄적인 개념으로 실행해야 하는 일련의 일들을 한 번에 처리한다고 이해하시면 좋을 것 같습니다. 위 그림은 일반적인 일을 수행하는 시점과 debounce를 적용한 일을 수행하는 시점을 시각화한 내용입니다. 처리해야 할 일이 생..
자바스크립트 ES6에서 새롭게 추가된 내용 중 화살표 함수(arrow function)는 함수를 단축해서 사용하는 방법으로 유용한 문법입니다. 함수를 단축해서 사용하는 문법이 화살표 함수라고 말했지만, 사실 화살표 함수(arrow function)가 일반 함수(function)와는 결을 달리 합니다. 그럼 오늘은 자바스크립트 ES6에 새롭게 추가된 화살표 함수를 알아보도록 하겠습니다. 화살표 함수를 선언하는 방법 화살표 함수는 일반 함수와 다른 점이 몇 가지 있습니다. 대표적으로는 선언하는 방법과 this의 범위입니다. 오늘은 먼저 화살표 함수를 선언하는 방법을 알아보겠습니다. function fn1() { return 'Hello World!' } const arrowFn1 = () => 'Hello ..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.