목록Language/JavaScript (14)
EtoC
첫 면접을 봤는데 2차부터 4차 면접까지 꾸준하게 받은 질문이 eventloop와 garbage collection이였다. 책에서 스윽 보고지나가면서 대충 이런거구나하고 넘겼는데 계속 질문이 들어오는게 많이 부족하게 대답한 듯..🥲 그래서 다시 책을 읽으면서 자세히 정리해보았다. 0. 비동기처리의 환경구조와 용어정리 자바스크립트 엔진(런타임)은 memory heap과 call stack으로 이루어져있다. heap은 구조화되지않는 큰 메모리 영역으로 말한다. 객체는 힙에 할당된다. memory heap은 자바스크립트의 객체(함수,변수 등)에 메모리 할당이 일어나는곳으로 크기가 변하는 값의 참조값을 가지고 있다. wep API는 브라우저에서 구현된 API로, node에서는 background라고 하며, 비동..
코테스터디때 팀원들이 설명하면서 class,class하는데 나는 아직도 class가 뭔지 모른다. 딥다이브를 읽다보면 알겠지했는데 딥다이브에서 만나기전에 nestjs에서 만났다. 정확히 class가 뭘까? 1. Class class 객체 지향 프로그래밍에서 객체를 정의하기 위한 상태와 함수로 구성된, 객체를 생성하기위해 변수와 함수를 정의하는 틀이다. tree 라고도하는데 객체를 만들기위한 설명서라고 생각하면된다. class를 사용하여 새로운 객체(인스턴스)를 만들 수 있다. 클래스를 사용하는 이유는 동일한 종류의 객체를 여러개 만들어야하는경우, 같은 기능들을 하나로 묶어서 호풀하면 편하게 사용할수 있기 때문이다. class name{설명}의 설명대로 만들면 new name()의 새로운 인스턴스(객체) ..
제어문은 조건식에따라 코드블록을 실행하거나 반복문을 실행할때 사용한다. 코드는 보통 위에서 아래로 실행되는데, 제어문을 사용하면 실행순서를 인위적으로 제어할 수 있다. 하지만 인위적으로 제어시 가독성이 나빠지고 오류가 발생 할 수 있다. 1. 블록문 블록문은 자바스크립트에서 하나의 실행단위로 중괄호로 묶인 블록(코드블록)이다. { //블록문 let a = 1; } 단독으로 쓰이거나 제어문, 함수정의로 사용된다. 블록문은 항상 문의 종료를 의미하기때문에 세미콜론을 붙이지 않는다. 2. 조건문(conditional statement) 조건문은 조건식의 평가결과에따라 실행할 코드브록을 결정한다. if (a % 5 == 0) { /*조건식*/ return a; } 조건문에는 if..else문과 switch문의 ..
연산자란 연산자는 하나 이상의 표션식을 대상으로 산술,할당,비교,논리,타입,지수연산등을 하나의 값으로 만드는작업을 수행한다. 연산자는 피연산자를 연산하여 새로운 값을 만드는데 피연산자는 값으로 평가될 수 있는 표현식이여야한다. 연산자의 부수효과 대부분의 연산자는 다른 코드에 영향을 주지않으나 일부 연산자는 다른 코드에 영향을 주는 부수효과를 가지고 있다. 대표적으로 부수효과가 있는 연산자는 할당 연산자(=), 증감연산자(++/--),delete연산자가있다. 연산자 예시 = 변수 값이 변하는 부수효과가있으며, 변수를 사용하는 다른 코드에 영향을 준다. ++/-- 피연산자의 값을 재할당하여 변수를 사용하는 다른코드에 영향을 준다. delete 객체의 프로퍼티를 삭제하는 부수효과가있다.객체를 사용하는 다른코드..
데이터타입은 값의 종류를 말하며, 자바스크립트의 모든 값은 데이터타입을 갖는다. 자바스크립트는 ES6에서 7개의 데이터 타입을 제시하며, 원시타입과 객체타입으로 분류할 수 있다. JavaScript의 데이터타입의 종류 Data(자료)란 프로그램이 처리할수 있는 모든것으로 자효형태에 따라 나눠놓은것을 자료형(DataType)이라 한다. 자바스크립트의 데이터 타입은 원시타입과 객체타입으로 나뉜다. 원시타입(Primitive dataType): 객체가 아닌 기본자료형이라고 하며, 변경불가능한 값으로 값에 의해 전달(pass-by-value)된다. 객체(참조)타입(Object type, Reference type):객체를 기반으로 하는 자료형으로, 참조에의한 전달(pass-by-reference)방식으로 전달된..
변수는 하나의 값을 저장하기위해 확보한 메모리공간자체 또는 그 메모리 공간을 식별하기위해 붙인 이름으로 변수에 할당되는 것이 값이다. 1. 값(value) 과 리터럴(literal) 1. 값 값은 표현식(statement)을 평가(evaluate),참조하여 생성된 결과를 말한다. 모든 값은 데이터타입을 가지며 메모리에 2진수(bit)로 저장된다. 2. 리터럴 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호("", ., [], {})를 사용하여 값을 생성하는 표기법이다. js에서 3은 단순한 숫자가 아니라 숫자 리터럴이다. 사람이 이해하는 숫자 3을 사용해 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진이 이를 평가하여 숫자 값 3을 생성한다. 리터럴의종류 종류 예시 종류 예시 정수 1 객체 {..
1. 호이스팅이란? 호이스팅이란 인터프리터가 모든(함수,변수)선언문의 메모리공간을 선언전에 미리 할당하여 상단으로 올려서 선언문을 유효범위의 최상단으로 옮겨진것처럼 작동하는 자바스크립트의 독특한 특징을 말한다. ✅ 유효범위? 변수에 접근할 수 있는 범위 ✅ block-level-scope? {}로 쌓여진 범위, let,const로 변수생성시 유효한 범위. ✅ function-level-scope? function(){}의 {}내의 범위, var로 변수생성이 유효한 범위. ✅ 유효범위의 최상단? 변수가 함수안에 정의: 선언문이 함수의 최상단으로 호이스팅 된다. 변수가 함수밖에 정의: 선언문이 전역의 최상단으로 호이스팅 된다. 아래의 코드를 보면는 인터프리터에의해 위에서부터 한줄씩 실행되기때문에 refere..
애플리케이션은 데이터를 다루는데 변수는 이 데이터를 관리하기위해 사용하는 중요한 용어이다. 1. 변수에 대해서 변수는 하나의 값을 저장한 메모리공간으로 그 메모리공간을 식별하기 위해 붙인 이름이다. 메모리에 저장된 값을 식별할 수 있는 고유명을 변수명이라하고, 변수에 저장된 값을 변수 값이라 한다. 변수에 값을 저장하는것을 할당(assignment), 값을 읽어오는 것을 참조(reference)라 한다. 변수명을 사람이 이해하기 쉽게 지음으로써 가독성을 높일수있다. 2. 변수 선언과 호이스팅 쓰다보니 길어져서 따로 작성하였다. 변수를 사용하려면 반드시 변수를 선언해야한다. 변수를 선언하면 값을 저장할 메모리 공간을 확보(allocate)하고 변수명과 확보한 메모리 공간의 주소를 연결하여 값을 저장할 수 ..