분류 전체보기216 JavaScript의 스코프 - 3 (Scope of JavaScript) 지금까지 공부한 스코프와 그 범위, 렉싱 단계 이후 스코프를 변경하는 방법들을 통해 스코프의 특징에 대해 어느정도 감이 잡히셨을거라 생각합니다. 그래도 아직은 약간 부족한 느낌이 드니 조금 더 확실히 해보겠습니다. 이전 글에서 스코프는 분명 서로 중첩되지 않는 독립적인 공간을 형성한다고 하였습니다. 예를 들어 설명했었던 함수가 이러한 스코프를 형성하는 역할을 하는 좋은 예시 중 하나입니다. '예시 중 하나' 라는 것은 다른 자료 구조 또한 스코프를 형성할 수 있다는 이야기겠지요? 이번 포스트에서는 스코프를 형성하는 구조들에 대해 알아보도록 하겠습니다. 함수 기반 스코프 가장 먼저 함수를 기반으로 한 스코프입니다. 함수 내에 속한 변수와 함수들은 중첩된 스코프들을 포함하여 함수 전체에 걸쳐 사용됩니다. 우.. 2021. 5. 13. JavaScript의 스코프 - 2 (Scope of JavaScript) 지난 글에서는 스코프가 어떤 것인지 알아보았습니다. 이번 글에서는 자바스크립트를 비롯한 대부분의 프로그래밍 언어에서 사용하는 렉시컬 스코프에 대해 알아보겠습니다. 렉시컬 스코프 렉시컬 스코프는 스코프의 작동 방식 중 하나입니다. 컴파일러가 문자열을 의미있는 단어들로 나누어 내는 것을 토크나이징이라고 했는데, 이를 렉싱(Lexing)이라고 부르기도 합니다. 렉싱이 일어나는 시간대를 렉싱 타임(Lexing Time)이라고 하는데 결국 개발자가 작성한 코드들이 어디에 작성되었는지를 기반으로 처리된다고 볼 수 있겠습니다. 다른 방식으로는 동적 스코프가 존재하지만, 이 글에서 따로 다루지는 않겠습니다. 여러 함수들이 중첩되어 있는 코드의 스코프를 그림으로 나타내면 아래와 같습니다. 매개변수를 포함한 함수 내부까지.. 2021. 5. 3. JavaScript의 스코프 - 1 (Scope of JavaScript) 이번 시간에는 자바스크립트의 스코프(Scope) 개념에 대해 알아보겠습니다. 스코프는 변수가 어디에 저장이 되는지, 이후에 이 변수를 어떻게 찾을지를 정하는 규칙입니다. 변수를 제대로 사용하려면, 어떻게 스코프가 정의되는지 그 규칙을 아는 것이 매우 중요합니다. 먼저 자바스크립트가 변수를 어떻게 다루는지부터 살펴보겠습니다. 컴파일러 이론 자바스크립트는 얼핏 보기엔 인터프리터 언어처럼 보이지만, 사실은 컴파일러 언어에 속합니다. 대중적인 오해와 달리, Javascript는 인터프리트 형태 자바가 아니다. 간단히 말하면, Javascript는 프로토 타입 기반 객체 생성을 지원하는 동적 스크립트 언어이다. - MDN 문서 'JavaScript에 대하여' 中 자바스크립트 엔진 중 하나인 라이노(Rhino) 엔.. 2021. 4. 11. Jest 기본 사용법 TDD 북스터디를 진행하며 실습 개념으로 라이브 코딩을 하게 되었는데, 이때 Jest를 사용하여 테스트 케이스를 작성하게 되었습니다. 문제는 Jest를 사용해 본 경험도 없었고, 테스트 케이스를 작성하는 행위도 거의 해본적이 없어 코딩을 하는 시간보다 헤매는 시간이 훨씬 많았습니다. 모르는 것은 차근차근 배워나가자는 마음으로 테스트 프레임워크인 Jest의 기본적인 사용법을 정리해보았습니다. 설치 npm 명령어를 통해 jest를 설치해줍니다. npm install --save-dev jest 또는 yarn을 사용하셔도 좋습니다. 공식문서에서는 yarn을 사용하기 때문에 yarn으로 설치하시는 것을 권장드리지만, 어떤걸 사용하셔도 상관없습니다. yarn add --dev jest 준비 먼저 테스트 할 대상의.. 2021. 4. 3. JavaScript의 문법 (Grammar of JavaScript) 자바스크립트가 동작하게 코드를 작성하는 것은 어렵지 않습니다. 그러나 정확한 문법을 알고, 온갖 자바스크립트적 허용이 주는 혼란에 빠지지 않고 코드를 작성할 수 있는 것은 별개의 문제입니다. 이번 글에서는 이러한 불분명한 코드들을 걷어내기 위해 JS의 문법에 대해 알아봅니다. - 문과 표현식 흔히 어떤 JS 코드를 지칭할때 문(statement)과 표현식(expression)을 혼용해서 많이 사용합니다. 그러나 둘의 단어가 다르듯 서로 가리키는 대상도, 범위도 분명히 다른 용어입니다. 그렇다면 어떻게 다른지 예시를 통해 살펴보겠습니다. var test = 123 + 456; 위 코드에서 문과 표현식은 어떻게 찾을 수 있을까요? 자바스크립트에서 문은 완성된 하나의 코드 뭉치를 의미합니다. 영어 문법에서도 .. 2021. 3. 30. 테스트 주도 개발 책 구입했습니다. 리팩토링 북스터디의 다음 과정으로 테스트 주도 개발을 읽게 되어 책을 구매하게 되었습니다. JS 스터디와 동시에 진행하게 되어 살짝 바쁜감이 있지만, 선배님들을 따라 열심히 진행해 볼 계획입니다. TDD는 당장은 이전처럼 포스팅으로 따로 정리는 안할 것 같습니다. 두 번 정도 스터디를 해보았는데, 한 번 읽고 스터디를 한 정도로는 아직 TDD에 대한 개념이나 숙련도가 많이 떨어지는 수준이라 글로 명쾌하게 정리하기 어려웠습니다. 스터디가 끝나면 천천히 다시 읽으며 작성하도록 할 계획입니다. 이번 기회에 리팩토링에서 마르고 닳도록 강조했던 테스트는 원 없이 할 수 있겠네요. 기대됩니다. 2021. 3. 29. 이전 1 ··· 18 19 20 21 22 23 24 ··· 36 다음