[JS Deep Dive] 17, 18장 정리 - 생성자 함수에 의한 객체 생성 | 함수와 일급 객체에 대하여
·
Study/Modern JS Deep Dive
생성자 함수에 의한 객체 생성 Object 생성자 함수new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환→ 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다.// 빈 객체의 생성const person = new Object();// 프로퍼티 추가person.name = 'Lee';person.sayHello = function () { console.log('Hi! My name is ' + this.name);};console.log(person); // {name: "Lee", sayHello: f}person.sayHello(); // Hi! My name is Lee생성자 함수란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함..
[JS Deep Dive] 15,16장 정리 - let, const 키워드와 블록 레벨 스코프 | 프로퍼티 어트리뷰트에 대하여
·
Study/Modern JS Deep Dive
var 키워드로 선언한 변수의 문제점var 키워드로 선언된 변수의 특징1. 변수 중복 선언 허용2. 함수 레벨 스코프var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정→ 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.함수 레벨 스코프는 전역 변수를 남발할 가능성을 높인다. 3. 변수 호이스팅변수 호이스팅에 의해 var 키워드로 선언한 변수는 변수 선언문 이전에 참조할 수 있다.→ 할당문 이전에 변수를 참조하면 언제나 undefined를 반환 let 키워드1. 변수 중복 선언 금지2. 블록 레벨 스코프let 키워드로 선언한 변수는 모든 코드 블록(함수, if문, for문, while문, try/catch 문 등)을 지역 스코프로 인..
[JS Deep Dive] 13,14장 정리 - 스코프 | 전역 변수의 문제점에 대하여
·
Study/Modern JS Deep Dive
스코프자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징이 있으므로 주의가 필요하다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다.→ 스코프는 식별자가 유효한 범위를 말한다. 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에서 어떤 변수를 참조해야 할 것인지를 결정해야 한다.→ 식별자 결정 스코프란 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙이라고도 할 수 있다. 스코프의 종류코드는 전역과 지역으로 구분 가능 전역과 전역 스코프전역이란 코드의 가장 바깥 영역을 말한다.전역은 전역 스코프를 생성전역에 변수를 선언하면 전역 스코프를 갖는 전역 변수가 됨전역 변수는 어..
[JS Deep Dive] 12장 정리 -함수에 대하여
·
Study/Modern JS Deep Dive
프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다.함수는 함수 정의를 통해 생성 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 함 → 함수 호출 함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성함수는 객체이다. 일반 객체는 호출할 수 없지만 함수는 호출할 수 있다.함수 정의 방식// 함수 선언문function add(x,y) { return x + y;}// 함수 표현식var add = function (x, y) { return x + ..
[JS Deep Dive] 10장, 11장 정리 - 객체 리터럴 | 원시 값과 객체의 비교에 대하여
·
Study/Modern JS Deep Dive
객체 리터럴자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 “모든 것”이 객체다. 원시 값을 제외한 나머지 값은(함수, 배열, 정규 표현식) 등은 모두 객체원시 타입의 값, 즉 원시 값은 변경 불가능한 값이지만 객체 타입의 값, 객체는 변경 가능한 값이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.  자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라고 부른다. 객체는 프로퍼티와 메서드로 구성된 집합체 프로퍼티: 객체의 상태를 나타내는 값(data)메서드:..
[JS Deep Dive] 9장 정리 - 타입 변환과 단축 평가에 대하여
·
Study/Modern JS Deep Dive
명시적 타입 변환(타입 캐스팅): 개발자가 의도적으로 값의 타입을 변환하는 것암묵적 타입 변환(타입 강제 변환): 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것 원시 값은 변경 불가능한 값이므로 변경할 수 없음→ 타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것 암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는 것이 아님→ 피연산자의 값을 암묵적 타입 변환해 새로운 타입의 값을 만들어 단 한 번 사용하고 버림 둘 중에 뭐를 더 많이 써야되는 것이 중요한 것이 아닌, 코드를 예측할 수 있어야 한다는 것이 중요암묵적 타입 변환 문자열 타입으로 변환(+)문자열 연결 연산자의 모든 피연산자는 코드의 문맥상 모..
[JS Deep Dive] 6,7,8장 정리 - 데이터 타입, 연산자, 제어문에 대하여
·
Study/Modern JS Deep Dive
6장 - 데이터 타입데이터 타입은 값의 종류를 말한다.자바스크립트(ES6)는 7개의 데이터 타입을 제공 원시 타입숫자 타입(number) → 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재문자열 타입(string) → 문자열불리언 타입(boolean) → 논리적 참과 거짓undefined 타입 → var 키워드로 선언된 변수에 암묵적으로 할당되는 값null 타입 → 값이 없다는 것을 의도적으로 명시할 때 사용하는 값심벌 타입(symbol) → ES6에서 추가된 7번째 타입 객체 타입객체, 함수, 배열 등숫자 타입자바스크립트는 독특하게 하나의 숫자 타입만 존재한다. ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따름→ 모든 수를 실수로 처리, 정수만 표현하기..
[JS Deep Dive] 4,5장 정리 - 변수, 표현식과 문에 대하여
·
Study/Modern JS Deep Dive
4장- 변수‘10 + 20’ 자바스크립트 코드를 계산(평가 하려면),10, 20, +라는 기호(리터럴과 연산자)의 의미를 알고 있어야 하며10 + 20이라는 식(표현식)의 의미도 해석(파싱)할 수 있어야 한다.자바스크립트 엔진이 10 + 20이라는 식의 의미를 해석하면 + 연산을 수행하기 위해 먼저 + 연산자의 좌변과 우변의 숫자 값, 피연산자를 기억한다.→ 이 때 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체 메모리 셀 하나의 크기는 1바이트(8비트) 컴퓨터는 메모리 셀의 크기, 즉 1바이트 단위로 데이터를 저장하거나 읽어들임 각 셀은 고유의 메모리 주소를 가짐→ 메모리 공간의 위치를 나타냄(0부터 시작, 메모리의 크기만큼 ..
[JS Deep Dive] 1,2,3장 정리 - 프로그래밍과 자바스크립트에 대하여
·
Study/Modern JS Deep Dive
1장 - 프로그래밍프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.→ 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야하는데, 이때 필요한 것이 컴퓨팅 사고(Computational thinking)이다. 기계어로 직접 명령을 전달하는 것을 대신할 가장 유용한 대안은사람이 이해할 수 있는 약속된 구문으로 구성된 프로그래밍 언어를 사용해 프로그램을 작성 한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기(컴파일러, 인터프리터)를 이용하는 것이다. 프로그래밍 언어는 구문(syntax)와 의미(semantics)의 조합으로 표현된다. 문법을 잘 안다고 해서 외국어..
[시스템프로그래밍] 임계구역과 세마포어에 관하여
·
Study/시스템프로그래밍
Critical Sections(임계 구역) 상호 배타적으로 실행되어야 하는 코드 세그먼트 공유 장치(Shared devices)는 한 번에 한 프로세스에서 액세스해야 하므로 배타적 자원(exclusive resources)이라고 불림. 코드의 중요한 부분들 Entry Section(진입 구역) 공유 변수 또는 다른 자원을 수정할 권한을 요청하는 코드를 포함한다. Critical Section(임계 구역) 공유 자원에 액세스하거나 재진입할 수 없는 코드를 실행하는 코드를 포함한다. Exit Section(나가는 구역) Entry Section이 다음 실행 쓰레드가 임계 구역에 들어갈 수 있음을 알 수 있어야 해서 필요 Remainder Section(나머지 구역) 액세스를 해제한 후, 스레드는 실행할 다..