본문 바로가기
728x90
반응형

Study63

[Javascript] 11장 원시 값과 객체의 비교 (deep dive) 6장 데이터 타입에서 보았듯이 자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 구분된다. 원시 타입과 객체타입은 크게 세 가지 측면에서 다르다 1. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 2. 원시 값을 변수에 할당하면 메모리 공간에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 메모리 공간에는 참조값이 저장된다. 3. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다(값에 의한 전달). 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다(참조에 의한 전달). 원시 값 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 한번 생성된 .. 2022. 5. 16.
[Javascript] 10장 객체 리터럴 (deep dive) 객체란? 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조 객체는 프로퍼티와 메서드로 구성된 집합체이다. 프로퍼티 : 객체의 상태를 나타내는 값(data) 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작(behavior) 객체 리터럴에 의한 객체 생성 자바스크립트는 다양한 객체 생성 방법을 지원한다. 객체 리터럴 Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 이러한 객체 생성 방법 중에서 가장 일반적이고 간단한 방법은 객체 리터럴을 사용하는 방법이다. 객체 리터럴은 중괄호({...})내에 0개 이상의 프로퍼티를 정의한다. 변수에 할당되는 시점에 자바스크립트 엔진은 객체 리터럴을 해석해 객체를 생성한다. var person = { name:.. 2022. 5. 13.
[Javascript] 9장 단축평가 (deep dive) 단축 평가 'Cat' && 'Dog' // "Dog" 'Cat' || 'Dog' // "Cat" 논리곱(&&) 연산자는 두 개의 피연산자가 모두 true로 평가될 때 true를 반환한다. 논리곱 연산자는 좌항에서 우항으로 평가가 진행된다. 첫 번째 피연산자인 'Cat'은 Truthy 값이므로 true로 평가되고, 두 번째 피연산자를 평가해 보아야 표현식을 평가할 수 있다. 이 때 논리곱 연산자는 논리 연산의 결과를 결정하는 두 번째 피연산자인 'Dog'를 문자열 그대로 반환한다. 논리합(||) 연산자는 두 개의 피연산자 중 하나만 true로 평가되어도 true를 반환한다. 논리합 연산자 또한 좌항에서 우항으로 평가가 진행된다. 첫 번째 피연산자인 'Cat'은 true로 평가되고 이 때 두 번째 피연산자를.. 2022. 5. 13.
[Javascript] 9장 타입 변환 (deep dive) 타입 변환 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 혹은 타입 캐스팅이라 한다. 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 변환 되는 것을 암묵적 타입 변환 혹은 타입 강제 변환이라 한다. 명시적 타입 변환이나 암묵적 타입 변환 모두 기존의 값을 직접 병경하는 것은 아니다. 기존 값을 사용해 다른 타입의 새로운 값을 생성하는 것이다. 암묵적 타입 변환 1. 문자열 타입으로 변환 + 연산자는 연산자 파트에서 보았듯이 피연산자 중 하나 이상이 문자열이면 문자열 연결 연산자로 동작한다. 템플릿 리터럴 또한 표현식의 평가 결과를 문자열 타입으로 암묵적 타입 변환을 한다. // 템플릿 리터럴 `1 + 1 = ${1 + 1}` // "1 +.. 2022. 5. 11.
[Javascript] 8장 제어문 (deep dive) 제어문은 조건에 따라 코드 블록을 실행하거나 반복 실행할 때 사용한다. 제어문을 사용하면 위에서 아래 방향으로 순차적으로 진행되는 코드의 흐름을 제어하여 변경할 수 있다. 하지만 인위적으로 코드의 흐름을 변경할 경우 가독성을 해치는 경우가 생길 수 있다. 나중에 살펴볼 forEach, map, filter, reduce 같은 고차 함수를 사용한 함수형 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결하려 노력한다. 제어문을 바르게 이해하는 것이 코딩 스킬에 많은 영향을 주기 때문에 확실히 이해해보자. 블록문 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부른다. 일반적으로 제어문이나 함수를 정의할 때 사용한다. 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문.. 2022. 5. 9.
[Javascript] 7장 연산자 (deep dive) 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 산술 연산자 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능할 경우 NaN을 반환한다. 5 + 2; // 7덧셈 5 - 2; // 3뺄셈 5 * 2; // 10곱셈 5 / 2; // 2.5나눗셈 5 % 2; // 1나머지 증가(++) / 감소(--) 연산자는 위치에 의미가 있다. 피연산자 앞에 위치한 전위 증감연산자는 피연산자의 값을 먼저 증감을 한 후 다른 연산을 수행한다. 피연산자의 뒤에 위치한 후위 증감연산자는 다른 연산을 진행한 후 값을 증감한다. var x = 5, result; result = x++; console.log(result, x); // 5, .. 2022. 5. 9.
[Javascript] 6장 데이터 타입 (deep dive) 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류할 수 있다. 구분 데이터 타입 설명 원시 타입 숫자 타입 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재 문자열 타입 문자열 불리언 타입 논리적 참(true)과 거짓(false) undefined 타입 var 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 심벌 타입 ES6에서 추가된 7번째 타입 객체 타입 객체, 함수, 배열 등 숫자 타입 모든 수를 실수로 처리한다. Infinity, -Infiniy, NaN 을 제공한다. 자바스크립트는 대소문자를 구별하므로 다르게 쓰면 인식하지 못한다. 문자열 타입 문자열은 작은따옴표(''.. 2022. 4. 29.
[Javascript] 4장 변수 (deep dive) 변수 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 값의 위치를 가리키는 상징적인 이름 변수에 값을 저장하는 것을 할당(대입, 저장)이라 하고 변수에 저장된 값을 읽어 들이는 것을 참조라 한다. 식별자 어떤 값을 구별해서 식별할 수 있는 고유한 이름 식별자는 값이 아니라 메모리 주소를 기억하고 있다. 식별자 네이밍 규칙 식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있다. 단, 식별자는 특수문자를 제외한 문자, 언더스코어(_), 달러 기호($)로 시작해야 한다. 숫자로 시작하는 것은 허용하지 않는다. 예약어는 식별자로 사용할 수 없다. 변수 선언 변수를 사용하려면 반드시 선언이 필요하다. 자바스크립트에서는 va.. 2022. 4. 29.
자바스크립트 왕초보 공부 시작 책은 모던자바스크립트 Deep Dive 흔히 부르는 도마뱀책을 선택하여 시작해볼까 한다. 주변에서는 많이들 교과서처럼 이용하는 것 같아서 이 책을 선택하게 되었다. 전문적인 글은 아니지만 소소하게 공부해본 것들을 정리해보면서 블로그를 시작해보려한다. 그냥 읽어서 넘길 부분들은 정리하지 않고 정리가 필요해 보이는 부분만 정리해보겠다. 2022. 4. 29.
728x90
반응형