본문 바로가기

이것저것 스터디📚

(122)
var, let, const 차이 - var와 ES2015(ES6)에서 추가된 let, const는 JavaScript에서 변수를 선언하는 키워드이다. - var, let, const는 변수를 선언하는 키워드라는 공통점이 있지만, 재선언과 재할당 가능성, 범위(Scope), 호이스팅(Hoisting)에서 차이점을 가지고 있다. ※ 재선언, 재할당 - 재선언 : 동일한 이름의 변수를 같은 스코프 내에서 두 번 이상 선언하는 것을 의미힌다. - 재할당 : 이미 선언된 변수에 새로운 값을 할당하는 것을 의미한다. - var는 재선언, 재할당이 모두 가능하다. var name = 'poco' console.log(name); // 'poco' // 재선언 var name = "Kim" console.log(name); // "Kim" // 재할..
IP 주소 IP 주소 - IP(Internet Protocol)란 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소이다. IP 종류(IPv4 VS IPv6) ※ IPv4 - IPv4는 IP version 4의 약자로 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다. - IPv4는 일반적으로 마침표로 구분된 4개의 숫자가 있는 점으로 분리된 10진수 형식으로 표시된다. - 예를 들어, 172.16.254.1와 같이 표시되며, 이를 2진법으로 표현한다면, 32비트 숫자 10101100.00010000.1111110.0000001이 된다. - 즉, IPv4는 32bit로 이루어진 주소이며 이를 합산해보면 약 43억 개의 고유 주소를 제공한다. - 전 세..
call, apply, bind - JavaScript의 함수는 각자 자신만의 this를 정의한다. 일반 함수 호출(전역 함수, 중첩 함수, 일반 함수로 호출되는 메서드 내에서 정의한 중첩 함수 내부, 콜백 함수) : 기본적으로 this에는 전역 객체가 바인딩 된다. var name = "kim" // const, let으로 선언한 전역 변수는 window 전역 객체에 추가되지 않는다. function fn() { var name = "lee" console.log(this.name); // "kim" // 전역 객체 (브라우저에서는 window, Node.js에서는 global) } fn(); 메서드 호출 : 메서드 내부의 this는 메서드를 소유한 객체가 아닌 메서드를 호출한 객체가 바인딩 된다. const person = { na..
DHCP란? DHCP란? - DHCP란 ‘Dynamic Host Configuration Protocol(동적 호스트 구성 프로토콜)’의 약자로, IP 네트워크에 사용되는 네트워크 프로토콜이다. - DHCP는 IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당하는데, 대부분의 가정용 네트워크에서는 라우터가 IP 주소를 장치에 할당하는 DHCP 서버의 역할을 한다. - 즉, 클라이언트에서 IP 주소, 기본 게이트웨이, 서브넷 마스크, DNS 주소를 직접 할당하지 않도록 하는 역할을 한다. - DHCP는 네트워크에서 IP 주소와 관련된 설정 정보를 자동으로 할당하는 응용 계층의 프로토콜로OSI 7계층에서 응용 계층(ApplicationLayer)에 존재한다. DHCP 동작 과정 1. DHCP Di..
가비지 컬렉션 - 가비지 컬렉션(Garbage Collection)은 메모리 관리의 한 형태로, 프로그램이 더이상 사용하지 않는 메모리를 자동으로 회수하고 재활용하는 과정이다. - 이는 메모리 누수를 방지하고, 프로그램이 효율적으로 작동하도록 도와준다. - JavaScript의 원시값, 객체, 함수 등 우리가 만드는 모든 것은 메모리를 차지하고, JavaScript는 눈에 보이지 않는 곳에서 메모리 관리를 수행한다. 가비지 컬렉션 기준 - JavaScript에서는 도달 가능성(reachability)이라는 개념을 사용해 메모리 관리를 수행한다. - 도달 가능성이라는 것은 어떻게든 접근하거나 사용할 수 있는 값인가를 의미한다. - 루트(root) : 처음부터 도달 가능하기 때문에, 명백한 이유 없이는 삭제되지 않는다. ..
순환 참조(Circular Dependancy) - 순환 참조 : JavaScript에서 두 객체가 서로를 참조하는 상황을 말한다. - 순환 참조는 다양한 컨텍스트에서 발생할 수 있으며, 주로 객체 간의 참조, 모듈 등 다양한 JavaScript 구조에서 나타날 수 있다. - 아래는 순환 참조가 발생할 수 있는 예시이다. 1. 객체 간의 순환 참조 let objectA = { objectB: null }; let objectB = { objectA: null }; objectA.objectB = objectB; objectB.objectA = objectA; - 위 예제에서 objectA는 objectB를 참조하고, objectB는 objectA를 참조하여 순환 참조가 발생한다. - 과거 브라우저에서는 참조 카운팅 방식(참조 개수를 카운팅하여 참조가 ..
HTTP 1.1 VS HTTP 2.0 HTTP 1.1 VS HTTP 2.0 HTTP 1.1 * HTTP 1.1 특징 - HTTP 1.0에서는 Connection 당 하나의 요청을 처리할 수 있다보니 동시 전송이 불가능했고(하나의 요청에 대한 응답이 온 후 다음 요청을 처리하기 때문) 이는 네트워크 시간을 지연시키는 단점이 있었다. - 따라서, HTTP 1.1에서는 HTTP Pipelining이 도입하여 네트워크 시간을 줄이는 방식을 도입하였다. - HTTP Pipelining : 하나의 Connection으로 다수의 Request와 Response를 처리할 수 있게하는 것으로 HTTP 1.0과 달리 여러 요청들에 대한 응답 처리를 뒤로 미루는 방법을 사용한다. - 하지만, 이는 완전한 멀티플렉싱이 아닌 응답처리를 미루는 방식이므로 각 응답의..
커링과 클로저 1. 커링(Currying) - 커링 : 커링은 f(a, b, c)처럼 단일 호출로 처리하는 함수를 f(a)(b)(c)와 같이 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합되도록 반환하는 것이다. - 커링은 함수를 호출하는 것이 아닌 단지 반환할 뿐이다. - 함수 호출을 체인으로 연결할 수 있으며, 함수의 재사용성을 높일 수 있다. * 커링 예제 function curry(f) { // 커링 변환을 하는 curry(f) 함수 return function(a) { return function(b) { return f(a, b); }; }; } function sum(a, b) { return a + b; } const curriedSum = curry(sum); console.log(curriedS..