목록JavaScript (5)
맨틀 이야기
자바스크립트에는 프록시라는 객체가 있다. 어떤 객체를 생성할 때, 그 객체가 만들어지는 과정 도중에 난입해서 객체의 요소들에 영향을 줄 수 있는게 프록시다. 프록시 객체는 변형할 타겟 객체와 변형 액션을 수행할 핸들러를 인자로 받아 생성한다:const proxyObject = new Proxy(target, handler); 핸들러 함수는 트랩(trap)이라고도 부르며, 여러가지 함수가 담긴 객체로 전달한다. 우리는 트랩을 통해 타겟 객체의 값이나 메소드를 바꿔 프록시 객체를 만들게 된다. 몇가지 주요 트랩 함수들을 알아보자. handler.get()타겟 객체의 요소에 접근할 수 있는 함수로, 타겟 객체가 가진 요소의 값을 바꿀 때 쓴다. 타겟 객체(target), 타겟 객체의 요소(property), ..
코드는 여러 파일로 분리해서 작성하는 것이 좋다. 어떤 코드가 무슨 역할을 하는지를 명확한 파일명과 함께 체계적으로 저장하면 다른 개발자와 협업할 때 도움되는 것은 물론이고, 나중에 스스로 짠 코드를 돌아볼 때도 그때 당시에 로직을 짠 의도와 방향성을 빨리 파악할 수 있다. 코드가 저장된 하나의 파일을 모듈이라고 한다. 기본적으로 모듈별로 코드를 분리하면 변수나 함수는 생성된 모듈 내에서만 참조할 수 있지만, 다른 모듈에서도 참조할 수 있도록 내보내는 것 또한 가능하다. 한 모듈 안에 있는 코드를 외부에서 사용할 수 있도록 내보내는 것을 export라 하고, 반대로 다른 모듈에 있는 코드를 불러오는 것을 import라 한다. 자바스크립트에는 CommonJS와 ESM이라고 하는 두가지의 모듈 유형이 있다...
자바스크립트의 reduce 메소드는 배열을 아예 다른 형식의 데이터로 가공하는 데에 매우 유용한 함수다. 배열의 각 인덱스를 차례대로 돌면서 함수를 실행하고, 그 결과값을 따로 저장해두었다가 다음 인덱스의 결과값과 합치는 것이 reduce 메소드의 핵심이다. 아래는 reduce 메소드의 기본적인 구성이다.array.reduce((종합값, 현재값, 인덱스) => { 함수 }, 시작값); reduce 메소드는 두가지 파라미터를 필요로 한다: 각 인덱스마다 실행할 함수와 시작값이다.reduce 메소드가 실행시키는 함수는 지금까지 저장한 종합값, 현재 인덱스에 들어있는 값, 그리고 현재 인덱스 값을 인자로 받는다. 이 함수는 다음 인덱스에서 사용할 종합값을 리턴해야 한다.시작값은 reduce 메소드를 실행했을 ..
동적 언어자바스크립트는 동적 언어라고 한다. 데이터의 타입이 제대로 정의되었는지를 코드가 실행중일 때 확인한다는 것이다. 정적 언어인 C언어나 자바(Java)는 코드를 실행하기 전에 컴파일 단계에서 타입을 확인하기 때문에, 잘못 정의된 타입이 있으면 코드를 컴파일하기 전에 에러가 발생한다. 사전에 타이핑 실수로 인한 코드 오류를 발견할 수 있다. 하지만 자바스크립트는 타입 정의를 미리 확인하지 않는다. 따라서 코드 로직에 데이터 타입을 잘못 사용하는 허점이 있으면 자바스크립트 코드가 한창 실행되고 있을 때 에러가 발생하기 십상이다. 타입스크립트(TypeScript)타입스크립트는 자바스크립트도 정적 언어처럼 컴파일할 때 타입 체킹을 할 수 있도록 자바스크립트에 타입을 추가한 언어다. 타입스크립트로 코드를 ..
변수는 무엇인가?변수는 컴퓨터가 연산에 활용하는 "데이터"를 저장할 수 있는 일종의 공간이다. 이 공간에 저장된 데이터는 프로그램의 코드가 실행되는 동안 언제든 불러올 수 있다.모든 변수에는 이름이 붙여진다. 프로그램을 실행하면서 우리는 변수의 이름을 사용해 데이터를 불러오게 된다. 변수에 이름을 지어주는 것을 "선언"이라 한다.변수에 데이터를 저장하는 것을 "정의"라 한다. 변수는 선언과 동시에 데이터를 갖게 되거나, 또는 일단 선언만 되고 나중에 그 변수에 데이터 값이 정의될 수도 있다. (예외의 경우도 있다) JavaScript에는 변수에 여러가지 종류가 있다.var: var에 속한 데이터는 언제든지 다른 데이터로 채울 수 있다. var 변수는 이름이 선언되기 전에 데이터를 저장할 수 있다.let:..