JavaScript

    [JavaScript] This 포인터 이해하기

    [JavaScript] This 포인터 이해하기

    This 포인터 앞서 This 포인터가 포함된 실행 Context와 Scope에 대해 알아보았다. This로 특정 위치를 참조 할 수 있다. 클래스 내부를 참조할 때 this를 함께 사용함을 본적이 있을 것이다. 또, 일반 함수형과 화살표 함수의 큰 차이점이 바로 이 this 포인터이다. function myFunc(){ console.log("myFunc called"); } myFunc(); //함수 직접 호출 const o ={ name : 'Daniel', printName : function(){ console.log(this.name)} } o.printName(); //객체릐 메서드를 호출 function Person(name){ this.name = name this.printName = ..

    [JavaScript] 호이스팅과 클로저

    [JavaScript] 호이스팅과 클로저

    클로저 자바스크립트에서 함수는 일급 객체(First Class Object)로 취급된다. 일급 객체란? 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 변수에 할당할 수 있으며, 다른 함수를 인자로 전달받는다. 또, 다른 함수의 결과로 return 될 수 있다. 클로저는 Factory 함수가 저장되는 공간이라고 할 수 있으며 일급 객체 성질을 이용한다. 선언된 createCard()를 객체 처럼 다룰 수 있다. 여러 클로저를 생성시에 각각의 스코프가 생성되어, 내부 변수는 공유되지 않는다. Factory 함수란? 함수들을 객체의 형태로 return 하는 함수. 위의 코드의 createCard()도 Factory 함수이다. Class를 return 생성, return하는 경우도..

    [JavaScript] 실행 Context와 Scope

    [JavaScript] 실행 Context와 Scope

    자바스크립트 엔진이 어떻게 동작 하는지 알아보자. 실행 컨텍스트 (Execution Context) 자바스크립트 엔진은 실행 컨텍스트 스택의 흐름에 따라 동작한다. 실행 컨텍스트란? 코드의 흐름과 변수 따위 등 함수 동작에 필요한 환경 정보가 담긴 객체를 지칭한다. This this는 기본적으로 window를 가리키고, console.log와 같은 함수는 window에 포함되어 있다. 프로그래밍에서 의도한 위치의 변수나 함수를 사용하기 위해 this를 적절하게 사용해야한다. [JavaScript] This 포인터 이해하기 This 포인터 클래스 내에서 this.변수명 형식으로 변수를 참조하는 것을 보았을 것이다. 앞서 실행 컨텍스트에 this가 포함된 것을 볼 수 있다. this는 스코프 마다 달라질 수..

    [JavaScript] 자바스크립트의 구성

    [JavaScript] 자바스크립트의 구성

    자바스크립트 프로그래밍 언어를 해석하는 기법은 크게 번역 기법(컴파일러가 이에 속함)과 인터프리터가 있다. 컴파일러 : 고급언어로 작성된 프로그램을 미리 원시언어로 번역해 프로그램을 생성 인터프리터 : 실행과 동시에 한 줄 씩 원시언어로 번역하는 기법 자바스크립트는 컴파일러를 통하는 언어가 아니라, 인터프리터 기법으로 한 줄 씩 기계어로 번역된다. 언어 수준이 비교적 간단하지만 컴파일러보다 속도가 느리고 오류를 검출하기 어렵다. 또한, 호이스팅이라는 개념으로 변수(var 타입)와 함수가 최상단으로 끌어올려지는 특징이 있다. DOM (Document Object Model) 객체 지향 모델로 구조화된 문서를 표현하는 방식이다. 프로그래밍 언어가 구조, 스타일, 내용 등을 변경할 수 있도록 하며 XML과 H..

    [JS/알고리즘] 카카오 : 문자열 압축 (프로그래머스)

    문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘..