목록전체 글 (134)
PracticeEveryday

함수 函 상자(지닐) 함 數 셈 수 " 정의역 집합 의 원소 x를 정확히 하나의 공역 집합의 원소 y에 대응되는 관계 " - 어떤 집합의 각 원소를 다른 집합의 유일한 원소에 대응되는 것이다. => 하나의 값은 오직 하나의 값을 갖는다. - 그렇기 때문에 함수란 어떤 값을 연산했을 때 특별한 조건 없이 어떤 값이 나올 지 알 수 있어야 한다. 차이점 1) - 수학의 함수는 참조 투명성 ( Referential Transparency)를 갖는데 어떤 함수에 대해서, 인자만 같다면 항상 같은 같은 값으로 evaluate( 평가 ) 된다는 뜻이다. 만약 f(x) = x + 5 라면 f( 0 )은 5로 항상 대체 가능하다. - 하지만 프로그래밍에서는 참조 투명성이 항상 지켜지는 것이 아니다. 가장 쉽게 떠올릴 ..

내장 객체의 프로토타입 - prototype 프로퍼티는 자바스크립트 내부에서도 광범위하게 사용됩니다. 모든 내장 생성자 함수에서 prototype 프로퍼티를 사용합니다. - 이번 챕터에서는 내장 객체의 프로토타입에 대해 자세히 살펴본 후 어떻게 내장 객체의 프로토타입 프로퍼티를 응용할 수 있는지 알아보자! Object.prototype - 빈 객체가 있다고 가정해보자. let obj = {}; console.log(obj.toString()); // [object Object] console.log(obj); // {} obj = new Object(); console.log(obj); // {} console.log(obj.__proto__); // [Object: null prototype] {} c..

new 연산자와 생성자 함수 - 객체 리터럴 {...}을 사용하면 객체를 쉽게 만들 수 있습니다. - 하지만 개발을 하다 보면 유사한 객체를 여러개 만들어야 할 경우가 생깁니다. - 복수의 사용자, 메뉴 내 다양한 아이템을 객체로 표현하고 싶을 때가 그런 경우가 된다. 생성자 함수 - 생성자 함수 Constructor Function와 일반 함수에 기술적인 차이는 없습니다. - 하지만 생성자 함수의 경우 아래 두 관례를 따르게 됩니다. 함수 이름의 첫 글자는 대문자로 시작합니다. 반드시 'new' 연산자를 붙여 실행합니다. function User(name, age) { this.name = name; this.age = age; this.isAdmin = false; } const user1 = new..

프로토타입 기반 객체지향 프로그래밍 - 이러한 프로토타입 이론은 그대로 프로토타입 기반 객체 지향 프로그래밍 언어를 통해 구현되었다. - 1980 _ 1990년대에 이 이론을 토대로 많은 프로토타입 기반 언어가 생겼는데 대표적으로 JavaScript의 모태인 Self 언어와 가족 유사성 (Family Resemblance )을 언어 차원에서 완벽하게 구사한 Kevo가 있다. prototype 기반 언어 OOP 언어의 특징 1. 개별 객체 ( Instance ) 수준에서 메소드와 변수를 추가 2. 객체 생성은 일반적으로 복사를 통해 이루어짐 3. 확장 ( Extendes )은 클래스가 아니라 위임 ( Delegation ) => 현재 객체가 메시지에 반응하지 못할 때 다른 객체로 메시지를 전달 할 수 있어..

JavaScript는 왜 프로토타입을 선택했을까 "프로토타입은 자바스크립트에서 상속을 지원하기 위한 방법이다." 문제 1. 호이스팅 2. this " 호이스팅은 자바스크립트에서 전체 코드를 훑을 때 선언 부를 상단으로 올린다." " this는 기본적으로 global(브라우저에선 window)을 가리키고 실행 컨텍스트마다 달라 질 수 있으니 bind등을 통해 제어해야 한다." 요약 - 프로토타입 기반 OOP : Object-Oriented Programming는 class 기반의 OOP와 완전히 상반되는 방식이다. - 객체를 바라보는 개념 자체가 완전히 다르다 특히 문맥(Context)을 매우 강조하는 철학적 근거에 의해 태어난 녀석이라 렉시컬 스코프에 의한 호이스팅과 실행 문맥에 의한 복잡한 this가 ..

NPM - NPM은 Node => Node.js Packaged => Package === Module Manager = 관리자의 약자입니다. - Package는 모듈이라고도 불리는데 패키지나 모듈은 프로그램보다는 조금 작은 단위의 기능을 이야기 한다. - NPM이라는 것은 Node.js로 만들어진 Package(Module)을 관리해 주는 툴을 이야기 한다. - NPM은 자바스크립트 런타임 환경인 Node.js의 기폰 패키지 관리자 역할을 하는데 이를 통해 패키지, 모듈이라고 불리는 자바스크립트 소프트웨어를 자신의 프로젝트에 설치할 수 있다. - 또한 NPM을 통해 자신의 프로젝트에서 사용중인 패키지들의 버전 업데이트도 관리할 수 있다. NPM의 구성 1. NPM 웹사이트 - NPM 웹사이트에서 패키지..

바이트 도입 배경 - 컴퓨터는 미국에서 주로 발전한 기계인데 처음 컴퓨터를 통해 문자를 나타내기 위한 규약인 - ASCII ( American Standard Code for Information Interchange)도 알파벳을 포함한 미국에서 사용하기 위한 문자들을 표현하기 위해 만든 것이었다. 이 때 ASCII의 총 문자수가 공백을 포함하여 128자였기 때문에 7bit만으로 모든 문자를 표현하는 것이 가능 했다. - 7비트를 바이너리로 표현하면 111 1111 이므로 2^7이 되어 128자를 표현할 수 있었다. 여기에 오류 검출을 위한 패리티 비트 (Parity bit) 1개를 추가하여 8비트를 최소 연산 단위인 바이트로 정했다는 설이 가장 유력하다 Parity: 다른 나라의 통화(通貨)와의 비율...

인간은 왜 10진수를 쓸까 손가락이 10개라서... 컴퓨터는 왜 2진수를 쓸까 컴퓨터는 손가락이 2개라서... ( 0 과 1 ) - 컴퓨터는 전기 신호로 작동하는 기계이다. - 컴퓨터 내부에는 수 많은 트랜지스터가 존재한다. - 트랜지스터는 전기 신호로 작동하는 스위치인데 전기 신호가 들어오면 켜지고 들어오지 않으면 꺼진다. - 이제 전기 신호가 들어오면 ON / TRUE 상태이고 컴퓨터는 이걸 1로 인식한다. - 반대로 전기 신호가 없으맨 OFF / FALSE 상태이고 컴퓨터는 이것을 0으로 인식한다. - 이 두가지 상태를 2진수로 표현하는 것이 가장 간단하고 정확한 방법이었기 때문에 2진법을 사용한다. 컴퓨터가 이진법을 사용하는 이유 - 컴퓨터가 2진법을 사용하는 이유는 오류의 최소화와 효율성 ( 비..

웹 브라우저의 작동 원리 주소창에 https://www.naver.com https://youtube.com 등 다양한 URL을 검색하여 해당 웹 페이지에 접속했을 때 우리는 어떤 동작 원리에 의해 입력된 웹 페이지로 접속이 가능 할까? 브라우저 browse: 검색 둘러보다 검색하다 인터넷 - 웹 브라우저는 동기적(Synchronous)으로 (HTML + CSS), Javascript 언어를 해석한 내용을 화면에 보여주는 응용 소프트 웨어이다. // 왜 웹브라우저는 동기적으로 동작할까 Script 태그를 body 태그 하단에 위치시키는 아이디어에서 찾을 수 있다. HTML 요소들이 script 로딩 지연으로 인해 렌더링에 지장받는 일이 발생하지 않아 페이지 로딩 시간이 단축된다. DOM이 완성되기 전에 ..

JavaScript 엔진 구조 (Call Stack, Memory Heap) JavaScript 엔진은 Call Stack과 Memory Heap으로 구성되어 있습니다. JavaScript는 싱글 스레드로서 한 번에 하나의 작업만 처리하는 언어입니다. = 하나의 Call Stack을 가지고 있다. 하여 JavaScript는 이벤트 루프를 사용해 동시성(Concurrency)를 지원합니다. 1. Call Stack(호출 스택) Call Stack에는 원시 타입 값과 실행 컨텍스트( Execution Context )가 저장됩니다. 코드 실행에 따라 호출 스택이 쌓이는 곳 2. Memory Heap(메모리 힙) 메모리 할당이 일어나는 곳 Memory Heap에는 참조 타입( 객체, 배열, 함수 ... ) 등..