First-class Function - 일급 함수
·
과거
프로그래밍 언어가 함수를 다른 변수들처럼 취급할 수 있을 때, 이 언어를 일급 함수를 가진 언어라고 할 수 있다. 즉, 함수가 다른 변수처럼 사용될 때의 함수를 일급 함수라고 부른다. 변수에 함수 할당 const foo = () => { console.log("foobar"); } // 변수를 통해 호출 foo(); 익명 함수를 변수에 할당할 수 있고, 변수를 이용해 함수를 호출할 수 있다. 익명 함수가 아니어도 할당과 호출이 가능하다. 함수에 이름을 주는 것은 디버딩에 도움이 되지만 함수 호출에 영향을 주지는 않는다. 함수를 인자로 전달 function sayHello() { return "Hello, "; } function greeting(helloMessage, name) { console.log..
웹 기초
·
과거
목차 WEB 클라이언트와 서버 HTTP 웹 브라우저 HTML CSS JS 브라우저의 Rendering Web 인터넷에 연결된 컴퓨터를 통해 하이퍼텍스트 형식으로 표현된 다양한 정보를 효과적으로 검색할 수 있는 전 세계적인 정보 공간(정보 검색 시스템) 하이퍼텍스트는 웹 브라우저라 불리는 프로그램을 통해 웹 서버에서 '문서'나 웹 페이지등의 정보 조각을 읽어 컴퓨터 모니터에 출력하는 형태로 보이게 된다. 각 페이지에 있는 하이퍼링크에 따라 다른 문서로 이동하거나 그 페이지를 서비스하고 있는 서버로 정보를 보낼 수도 있다. 하이퍼링크를 따라 이동하는 행위를 흔히 웹 서핑 또는 웹 브라우징이라 한다. 이런 웹 페이지들의 집합을 웹 사이트라 한다. 월드 와이드 웹은 다음의 세가지 기능으로 요약할 수 있다. UR..
성능 최적화
·
과거
TOAST UI의 성능 최적화를 보고 정리한 글입니다. 목차 성능 최적화에 필요한 이론과 측정 도구 브라우저의 로딩 과정 레이아웃과 리페인트 블록 리소스와 주요 렌더링 경로 성능 개선 지표 성능 측정 도구 웹 페이지 로딩 최적화 블록 리소스(CSS, 자바스크립트) 최적화 리소스 요청 수 줄이기 리소스 용량 줄이기 웹 페이지 렌더링 최적화 레이아웃 최적화 애니메이션 최적화 맺음말 성능 최적화에 필요한 이론과 측정 도구 브라우저의 로딩 과정을 다루고, 각 과정에서 사용되는 용어와 성능을 측정하는 데에 사용되는 지표를 설명한다. 성능 측정 도구로 크롬 개발자 도구를 살펴본다. 브라우저의 로딩 과정 브라우저는 웹 페이지에 필요한 리소스를 내려받고 해석한 다음 여러 계산 과정을 거쳐 콘텐츠를 화면에 보여준다. 이..
[JS] Object property order
·
과거
1 : 숫자 - 오름차순 2 : 문자열 - 먼저 나온 순 3 : Symbol - 먼저 나온 순 const obj = { [Symbol('first')]: 3, '011': '1', '022': 'a', 1: 2, '123d': 1, [Symbol('last')]: 3, }; console.log(Reflect.ownKeys(obj)); // [ '1', '011', '022', '123d', Symbol(first), Symbol(last) ] for (const i in obj) { console.log(i); } /* 1 011 022 123d */ 참고
[JS] typeof null, null instanceof Object
·
과거
typeof null; // object null instanceof Object; // false null은 어떤 값이 '비어있음(absense)'을 나타낸다. primitive value 이며 falsy 한 값으로 취급된다. https://262.ecma-international.org/5.1/#sec-11.4.3 ECMAScript Language Specification - ECMA-262 Edition 5.1 This section contains a non-normative overview of the ECMAScript language. ECMAScript is an object-oriented programming language for performing computations and m..
details marker 제거
·
과거
크롬 89 버전 이후로 details-summary spec에 변경이 있어 -webkit-details-marker pseudo class로 marker를 없앨 수 없다. 대신 list-style-type: none; 또는 display: block; 을 적용한다. 'display: list-item' by default for test1 test
이벤트 리스너, 이벤트 위임
·
과거
property event GlobalEventHandlers.onclick - Web APIs | MDN The onclick property of the GlobalEventHandlers mixin is the event handler for processing click events on a given element. developer.mozilla.org Web api event listener EventTarget.addEventListener() - Web APIs | MDN The EventTarget method addEventListener() sets up a function that will be called whenever the specified event is delivered..
[JS] Lexical Grammar, Language Element
·
과거
CONTROL CHARACTER 제어문자 U+200C, U+200D, U+FEFF WHITE SPACE 공백문자 \t, \f ... LINE TERMINATORS 개행문자 \n, \r COMMENTS 주석 //, /**/, #! KEYWORD 예약어 break, case, const ... LITERALS 리터럴 Null, Boolean, Number, Object, Array... Language Element Statements 문 : 컴파일러 혹은 실행기한테 주는 힌트 메모리에 흔적이 안남고 실행기가 힌트를 받아 어떻게 처리할지 생각함. // Statements 문 // 공문 for (var i = 0; i < 5; i++); // 공문 반복 ;;;;;; // 공문 여러개 // 선언문 - 메모리 상..
너 왜 코드 그렇게 짰어?
·
과거
내가 왜 이렇게 프로그램을 짰는지 어떻게 설명할 수 있을까? 켄트 벡의 구현 패턴 프로그램의 철학이나 방향성을 정립 - 합리주의와 상대주의 상대주의 - 한 프로그램을 특정하게 정의할 수 없다. - 어떤 클래스는 다른 클래스의 부모 클래스임과 동시에 자식 클래스 일 수 있다. - JVM 입장에서 OS는 플랫폼이지만, 자바 프로그램 입장에서 JVM은 플랫폼이다. 이를 특정하기 위한 모두가 동의할 수 있는 기준을 잡기 위해 합리주의가 동원된다. 가치 - 의사소통, 단순함, 유연함 너 왜 그렇게 짰어? 의사소통 - 이렇게 짜니까 팀원들이 잘 이해해서요. 의사소통을 잘 하려구요. 단순함 - 이전 구조가 복잡해서 유지보수가 힘들어서 단순한 구조로 바꿨어요. 유연함 - 나중에 여러 기능을 더 추가할 수 있도록 짰어요..
Non-blocking JavaScript - 1
·
과거
setTimer const Item = class { time; block; constructor(block, time) { this.block = block; this.time = performance.now(); } } const queue = new Set; const f = time => { queue.forEach(item => { if (item.time > time) return; queue.delete(item); item.block(); }); requestAnimationFrame(f); }; requestAnimationFrame(f); const timeout = (block, time) => queue.add(new Item(block, time)); timeout(_ => con..