Tree 나무를 뒤집어 놓은 것처럼 하나의 시작 노드(root)로부터 시작되어 자식 노들(child node)들이 가지를 치듯 뻗어 나가는 구조이다. 아래 그림과 같이 HTML이 좋은 예이다. root(뿌리)부터 시작해서 아래로 자식 노드들이 뻗어나가는 구조이다. 가장 위는 root이고 제일 아래를 leaf라고 한다. leaf는 자식이 없는 노드이...
Linked List / javascript 구현
Linked List / 연결리스트 여러 노드들이 위 그림과 같이 한 방향을 가리키는 연결 구조이다. 가장 처음 시작하는 노드를 head라고 하며, 가장 마지막 노드를 tail이라고 한다. 노드 들은 본인의 이전 노드와 다음 노드를 기억한다. 예를 들어, 어떠한 작업을 했을 때, 이전 단계로 작업을 되돌리기 위해 단축키 컨트롤 z로 이전 작업...
Big-O 시간복잡도
Big-O 란? big-O는 알고리즘의 효율성을 나타내는 지표이다. big-O를 이용하여 알고리즘의 성능을 판단한다. big-O표기법은 보통 알고리즘의 시간 복잡도와 공간 복잡도를 나타내는데 주로 사용된다. 시간 복잡도는 알고리즘의 시간 효율성을 의미한다. 시간 복잡도란 시간 개념으로 알고리즘의 수행 시간패턴이 얼마인지를 나타낸다. 시간이 늘...
OOP / 객체 지향 프로그래밍 / prototype
Object Oriented Programming / 객체 지향 프로그래밍 ? 객체지향은 동작하는 부분을 캡슐화해서 이해할 수 있게 하고, 함수형 프로그래밍은 동작하는 부분을 최소화해서 코드 이해를 돕는다. -마이클 페더스‘레거시 코드 활용 전략’ 저자 객체지향의 경우 객체 안에 상태를 저장한다. 각 객체는 메시지를 받을 수도 있고, 데이터를...
asynchronous / 비동기프로그래밍
자바스크립트에서 비동기가 왜 중요할까? 자바스크립트는 single-threaded 이기 때문이다. single threaded / single callstack란? 쓰레드가 하나라는 말이다. 쓰레드 하나에 하나의 callstack이 존재한다. 하나의 callstack은 한 번에 하나의 작업만을 실행한다. 실행해야 하는 작업해야 할 일...
underscore
_.identity _.identity = function(val) { return val; }; _.identity는 인자를 그대로 반환 한다. _.first _.first = function(array, n) { return n === undefined ? array[0] : array.slice(0, n); ...
Arrow Function 화살표 함수
화살표 함수에는 없는 것: 함수 이름, this, arguments 생성자로서 사용할 수 없다. 화살표 함수는 항상 익명이다. const myFun = function () { } const myFun = () => { } const fn = (a) => { console.log(a); }; fn(); c...
let, var, const 차이
let 과 var 의 차이점 let: block scope 안에서 유효한 스코프를 가지고 있으며, 지역변수를 선언한다. var: function scope 안에서 유효한 스코프를 가지고 있으며, 전역변수를 선언할 수 있다. let은 전역 객체를 통해 접근할 수 없지만 var는 접근이 가능하다. let a = 1; va...
Prototype
객체지향 생성자함수와 new 키워드 생성자(constructor)는 객체를 만드는 역할을 하는 함수(class)이다. 함수 앞에 new를 붙이면 리턴 값은 객체(instance)가 된다. 생성자 함수이름 첫글자를 대문자로 표기해 준다. ex) function Array () { // 생략 } // 생성자 함수 new Array...
CSS layout
block vs inline block element 화면 전체를 사용하는 태그 <h1>Hello world</h1> inline element 화면의 일부를 차지하는 태그 <span>반갑습니다.</span> block vs inline <h1>Hello world<...