자바스크립트

오늘은 자바스크립트에서 많은 개발자들이 헷갈려하는 this 키워드에 대해서 확실하게 짚고 가보려고 한다. 많은 개발자들은 this를 다음 두 가지 의미로 많이 생각한다. 함수 그 자체를 가리킴 함수의 스코프(scope)를 가리킴 결론적으로 둘 다 올바른 의미로 이해한 것은 아니다. 하나씩 설명해 보려고 한다, 자기 자신으로의 this 함수가 내부에서 자기 자신을 가리킬 일이 언제 있을까? 재귀 로직이 들어가는 경우도 있고 최초 호출 시 이벤트에 바인딩 된 함수 자신을 언바인딩 할 때도 자기 참조가 필요하다. 아래의 코드는 함수가 this로 자기 참조를 할 수 없다는 것을 보여주는 예제이다. foo.count = 0을 하면 foo라는 함수 객체에 count 프로퍼티가 추가된다. 하지만 this.count에..
이번에는 타입스크립트의 클래스와 인터페이스에 대해 공부한 내용을 정리해 보고자 한다. 객체지향 프로그래밍과 클래스 기초 객체지향 프로그래밍(Object Oriented Programming, OOP)은 커다란 문제를 클래스 단위로 나누고 클래스 간의 관계를 추가하면서 코드 중복을 최소화 하는 개발방식이다. 클래스 간의 관계를 추가할 때는 상속이나 포함 관계를 고려하여 추가한다. OOP를 통해 어플리케이션을 개발하면 코드 중복을 상당히 줄일 수 있다. 타입스크립트는 자바스크립트(ES6)에 비해서 OOP를 지원하는 부분이 훨씬 더 많다. 타입스크립트에서는 클래스 선언을 다음과 같이 할 수 있다. 더불어 Rectangle 클래스 타입은 그 아래의 인터페이스 타입과 정확하게 일치한다. class Rectangl..
오늘은 타입스크립트의 제어문, 연산자, 함수에 대해서 공부한 내용을 정리해 보려고 한다. 참고로 자바스크립트에 나오는 문법과 겹치는 부분은 생략을 하고 타입스크립트에서 새롭게 추가되거나 변경된 문법들에 대해서만 다루려고 한다. 제어문 타입스크립트에서는 자바스크립트에서 사용하는 if문 및 switch문을 사용할 수 있다. if문에서 조금 헷갈릴 수 있는 부분 하나만 짚고 넘어간다. 타입스크립트에서 숫자 타입인데 숫자가 0이면 false를 나타내고, 0이 아닌 나머지 값은 true를 나타낸다. 문자열의 경우 빈 값은 false이고 값이 있으면 true이다. 아래의 예제를 참고하자. let text: string = ""; let statusActive: number = 0; let isEnabled: boo..
타입스크립트의 변수 선언 타입스크립트에서 변수 선언 방식은 var, const, let 이렇게 세 가지가 있다. 1. var 전역 공간이나 함수 내에서 변수를 선언할 때 var 선언자를 사용한다. var 로 선언된 변수는 다음과 같은 두 가지 특성이 있다. 첫 번째는 호이스팅(Hoisting)이다. 호이스팅은 선언한 변수가 스코프의 최상위로 끌어올림 되는 현상이다. 두 번째는 함수 레벨 스코프(function level scope)를 지원한다는 점이다. 이는 함수 내에서 선언한 변수는 함수 내에서만 유효하고 함수 외부에서는 참조할 수 없음을 의미한다. // var는 함수 레벨 스코프를 지원 var myName = "sad"; function functionLevel() { var myName = "hap..
타입스크립트란? 타입스크립트는 MS에서 개발하고 관리하는 오픈소스 프로그래밍 언어로 어떤 브라우저나 호스트, 운영체제에서도 동작한다. 타입스크립트는 자바스크립트의 상위 집합으로서 ECMA의 최신 표준을 충분히 지원한다. 타입이라는 특징을 가지고 ES7이하의 표준을 포함하고 있다. 타입스크립트는 ES5를 포함하는 집합이기 때문에 기존의 ES5 자바스크립트 문법을 그대로 사용할 수 있다. 또한, ES6의 새로운 기능들을 사용하기 위해 Babel과 같은 별도 트랜스파일러를 사용하지 않아도 ES6의 새로운 기능을 기존의 자바스크립트 엔진에서 사용할 수 있다. 타입스크립트의 장점은 정적 타입 언어(static type language)이기 때문에 컴파일 시 시간이 조금 걸리더라도 안정성을 보장한다는 점이다. 자바..
JavaScript ES6에서 기존의 ES5와 비교해 보았을 때 많은 변화가 생겼다. 그 중의 하나는 ES6에서 컴포넌트 정의를 위한 모듈 형태를 지원한다는 것이다. 이 과정에서 기존의 자바스크립트에서 모듈을 정의한 방법인 AMD, CommonJS와는 다른 방식으로 모듈을 사용하게 되었다. 바로 import/export 문을 통해서 언어 내부적으로 자바스크립트 모듈 의존성을 지원하게 된 것이다. 이 글은 (과거의 나처럼) 기존의 CommonJS 방식의 require로 모듈을 불러오는 방식과 ES6의 import로 모듈을 불러오는 방식을 혼동하는 사람들을 위해서 작성하게 되었다. 먼저 기존의 CommonJS 방식의 모듈 사용 방식과 비교해 보았을 때 ES6 방식이 가진 장단점을 살펴보고 가자. ES6 방식..
· Dev. Life
오늘은 오랜만에 내 이야기를 좀 해보려 한다. 나는 올 한 해동안 두 군데의 스타트업(상반기에 한 번, 하반기에 한 번)에서 각각 두 세달 정도씩 인턴을 했었다. 분야는 웹 프론트엔드 였으며 둘 다 지인을 통해 알게 되었고 들어가서 일을 하게 되었다. 참고로 스타트업에서 개발자 인턴을 하는 건 생각보다 그렇게 어렵지 않을 수 있다. 왜냐하면 99%의 스타트업은 개발자가 항상 부족한 상황이기 때문이다. ㅎㅎ 작년 여름 영국에서 돌아와서 국비 지원 과정을 시작하면서 코딩을 배우기 시작했다. 2018년 말, 나의 실력은 딱 국비 지원 3~4개월 받은 사람의 수준 그 이상도 그 이하도 아니었다. 관련 글에도 자세하게 적었지만 나는 국비 지원 과정에 불만이 많았고 회의감도 느꼈다. 그래서 언제 나올 수 있을지 계..
· Dev. Life
(본문에 앞서, 저의 솔직하고 주관적인 후기임을 먼저 밝혀드립니다.) 작년 여름, 나는 6개월짜리 웹 개발 국비지원 과정을 수강하였다. 당시 나의 상황을 간단하게 설명하자면... 영국에서 교환학생을 돌아온 직후였고, 거기에 있는동안 너무 잘 놀고 와서 ㅋㅋ 코딩을 좀 제대로 해야 할 필요성을 느끼고 있던 시기였다. 인터넷 강의는 이전에도 몇 번 들어보았는데 강제성이 없어서 그런가 끝까지 완강을 못한 적이 더 많았던 것 같다. 뭔가 항상 시작을 하고 흐지부지 되는게 싫었고, 그렇다고 혼자서 무언가를 하자니 할줄 아는 것이 거의 없던 상황이어서 여러가지 고민이 많았던 시절이었다. 제대로 코딩을 배워보고 싶었다. 가장 먼저 알아본 건 패스트캠퍼스나 코드스테이츠, 코드스쿼드 등의 부트캠프였다. 나는 가을학기 휴..
DevOwen
'자바스크립트' 태그의 글 목록 (6 Page)