일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 모던 자바스크립트
- api 요청 수 제한
- 파일 url
- compateto
- 우아한테크코스
- Dev-Matching
- 자바스크립트
- api 비동기처리
- Deep Dive
- 딥다이브
- 검색
- concurrency limit
- invalid_grant
- 유효시간 설정 url
- 프론트엔드 과제
- 프리코스
- NestJS
- bucket4j
- 타입스크립트
- 우아한 테크코스
- TypeORM
- 프론트엔드
- AWS
- 음악 url 파일 다운로드
- 프로그래머스
- redis
- 스프링부트
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- oauth
- this
- Today
- Total
목록Deep Dive (9)
개발 알다가도 모르겠네요
스코프(scope)란? 식별자(identifier)가 유효한 범위 (자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙) var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수 if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 } } function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 } } console.log(var1); // 1 console.log(var2); // 2 console.log(var3); // 3 console.log(va..
실행 컨텍스트(execution context)는 자바스크립트의 동작 원리를 담고 있는 핵심 개념. 실행 컨텍스트를 바르게 이해하면 아래 이해 가능. 자바스크립트가 스코프 기반으로 식별자와 식별자 바인딩(식별자에 바인딩 된 값)을 관리하는 방식과 호이스팅이 발생하는 이유 클로저의 동작 방식 태스크 큐와 함께 동작하는 이벤트 핸들러와 비동기 처리의 동작 방식 소스코드의 타입 ECMAScript 사양은 소스코드(ECMAScript Code)를 4가지 타입으로 구분. 4가지 타입의 소스 코드는 실행 컨텍스트를 생성. 소스코드를 4가지로 구분하는 이유는 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기 때문. 전역 코드 global code 전역에 존재하는 소스코드. 전역에 정의된 함수..
코드의 재사용 동일한 작업을 반복적으로 수행하는 코드를 함수로 만들어 사용하는 것이 효율적. 유지보수 편의성 & 코드의 신뢰성 같은 코드의 중복으로 인한 수정에 걸리는 시간과 사람의 실수를 억제하고 재사용성을 높일 수 있음. 코드의 가독성 함수는 객체 타입의 값. 적절한 함수 이름은 함수 내부 코드를 이해하지 않고도 함수의 역할을 파악할 수 있게 돕고, 이는 코드의 가독성을 향상시킴. // 변수에 "함수 리터럴"을 할당 var f = function add(x, y) { return x + y; }; 리터럴(literal) 은 문자 or 약속된 기호를 사용해 값을 생성하는 표기 방식. 위에 코드는 함수 리터럴 을 변수에 할당 한 것. 즉, 함수 리터럴도 평가되어 값을 생성하며, 이 값은 객체(object..
1. 원시 타입의 값 === 원시 값 은 변경 불가능한 값(immutable value) 객체 타입의 값 === 객체 는 변경 가능한 값(mutable value) 2. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장. 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장. 3. 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달 → 값에 의한 전달(pass by value) 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달 → 참조에 의한 전달(pass by reference) 원시 값 원시 값은 변경 불가능한 값(immutable value) == 읽기 전용(read only) 값 변경 불가능하다. 변수는 하나의 ..
객체란? 원시 값: 변경 불가능한 값 (immutable value) 객체 값: 변경 가능한 값 (mutable value) 프로퍼티: 객체의 상태를 나타내는 값. 메서드: 프로퍼티를 참조하고 조작할 수 있는 동작. (프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부름) 프로퍼티 접근 마침표 프로퍼티 접근연산자(.)를 사용하는 마침표 표기법 대괄호 프로퍼티 접근 연산자([...])를 사용하는 대괄호 표기법 var person = { name: 'Lee' } //마침표 표기법에 의한 프로퍼티 접근 console.log(person.name); //대괄호 표기법에 의한 프로퍼티 접근 console.log(person['name']); person.last-name 에서 Node.js 환경과 ..
문자열 연결 연산자 // 문자열 연결 연산자 '1' + 2; // -> '12' 1 + '2'; // -> '12' // 산술 연산자 1 + 2; // -> 3 // true는 1로 타입 변환된다. 1 + true; // -> 2 // false는 0으로 타입 변환된다. 1 + false; // -> 1 // null은 0으로 타입 변환된다. 1 + null; // -> 1 // undefined는 숫자로 타입 변환되지 않는다. +undefined; // -> NaN 1 + undefined; // -> NaN 위의 코드를 보면 암묵적으로 타입이 자동 변환되는 것을 알 수 있다. 이를 암묵적 타입 변환 또는 타입 강제 변환 이라고 한다. 동등/일치 비교 연산자 비교 연산자 의미 사례 설명 부수 효과 ==..
개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라고 한다. var x = 10; // 명시적 타입 변환 // 숫자를 문자열로 타입 캐스팅한다. var str = x.toString(); console.log(typeof str, str); // string 10 // x 변수의 값이 변경된 것은 아니다. console.log(typeof x, x); // number 10 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환되기도 하는데 이를 암묵적 타입 변환 또는 타입 강제 변환 이라고 한다. var x = 10; // 암묵적 타입 변환 // 문자열 연결 연산자는 숫자 타입 x의 값을 바탕으로 새로운 문자열을 생성한다. var str = x ..
undefined 타입 변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined가 반환된다. 자바스크립트 엔진이 변수를 초기화하는데 사용하는 undefined를 의도적으로 변수에 할당한다면 undefined의 본래 취지와 어긋난다. 따라서 변수에 값이 없다는 것을 명시하고 싶을 때는 null을 할당하면 된다. null 타입 변수에 null값을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미. 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않은 메모리 공간에 대해 가비지 콜렉션을 수행할 것이다. null은 함수가 유효한 값을 반환할 수 없는 경우에도 명시적으로 null을 반환한다. *null의 ..
방학을 맞이해서 대충 지나간 자바스크립트를 보다 깊게 공부하고자 한다. 가장 후기가 좋고 자바스크립트 서적 중 근본이라고 불리는 '모던 자바스크립트 Deep Dive' 를 중심으로 내용을 정리하려고 한다. 양이 상당한데 평소에 그냥 넘어간 부분 중 중요하거나 모르는 부분 위주로 기록하고자 한다. 자바스크립트 엔진은 변수 선언을 다음과 같은 2단계에 거쳐 수행하게 된다. 선언 단계: 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다. 초기화 단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화한다. console.log(score); // undefined var score; // ① 변수 선언 score = 80; // ② 값의 할당 console.l..