자바스크립트내 타입은 크게 원시타입(primitive type) 과 객체타입(object/reference type) 으로 나뉜다고 배웠다. 앞에서 계속해서 원시타입값들에 대해 다루어봤고, 객체타입으로 따로 나뉜다는 것 자체부터 자바스크립트에서 객체 타입이 차지하는 비중이 작지 않다는 것을 유추할 수 있다. 이 두가지 타입의 차이점을 요약하면 크게 3가지로 나눌 수 있다. 원시 값은 변경 불가능한 값(immutable value)이다. 반대로 객체는 변경이 가능한 값(mutable value) 이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 반면 객체를 변수에 할당하면(확보된 메모리공간)에서는 참조 값이 저장된다. 원시값을 가지는 변수를 다른 변수에 할당하면 원시값이..
10-1. 객체란? 자바스크립트를 공부해오면서 정말로 많이 들었던 말이 객체라는 단어다. 이유는 잘 몰랐지만 객체기반의 프로그래밍 언어라고 알고 있었고, 자바스크립트를 구성하는 거진 모든 것이 객체라고 한다. (원시값을 제외한 나머지 값이 객체) 그렇다면 객체는 무엇일까? 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값 (원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조(data structure)라고 한다. 객체 내부값은 변경이 가능한데, 이는 11장에서 좀 더 자세히 다뤄보도록 하자. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키(key) 와 값(value) 로 구성된다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 위..
9-1. 타입 변환이란 변수를 선언할 때 일일이 타입을 선언하진 않지만, 자바스크립트의 모든 값은 타입을 가지고 있다.(이에 타입을 엄격하게 부여해주는 타입스크립트를 사용하고 있다). 개발자는 의도에 따라 타입을 변환시킬 수 있는데, 이를 명시적 타입변환(explicit coercion) 혹은 타입 캐스팅(type casting) 이라고 한다. var x = 10; var str = x.toString(); console.log(typeOf str, str); // string 10 // 원본 타입이 변환된것은 아니다. console.log(typeOf x, x) // number 10 위 메서드 toString 처럼 의도적으로 숫자타입을 문자타입으로 개발자가 변환시켰다. 이는 다른 이가 보더라도 개발자..
코드를 작성하다보면 if 문, switch 문 등 조건에 맞는 작동이 필요할 때가 너무도 많이 있다. 이러한 문을 제어문이라 하는데, 이 밖에도 여러가지가 있기에, 한번 더 깊게 알아보도록 하자. 제어문(control flow statement)은 조건에 따라 코드 블록을 실행하거나 반복 실행할때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행되는데, 이를 인위적으로 제어할 수 있게 해준다. 물론 과도한 제어문의 사용은 직관성을 떨어트리는 결과를 초래한다. 차례대로 코드를 읽어나갈 수 있는 가독성은 오류를 줄여줄 수 있기에 사용 시 주의를 요하고 있다. 그렇다 한들 모두가 알겠듯이 제어문은 너무나도 필수적이기에 복잡하더라도 차근차근 학습을 해야한다. 정말로 필수적이다! 8-1. 블록문 ..
연산자(operator)는 하나 이상의 표현식을 대상으로 일정 수행을 거쳐서 하나의 값을 만든다. 이때 연산의 대상을 피 연산자라고 한다. 한마디로 연산자는 값으로 평가된 피연산자를 연산해 새로운 값을 생성한다. 7-1 산술연산자 말 그대로 수학적 계산을 통해서 새로운 숫자 값을 생성한다. 산술 연산이 불가능한 경우 NaN(not a number) 을 반환한다. 5 + 2; 5 - 2; 5 * 2; 5 / 2; // 2.5 5 % 2; // 1 위 코드처럼 피 연산자 2개를 산술 연산하여 숫자값을 생성하는 것을 이항(binary) 산술 연산자 라고 한다. 위 경우를 보면 알겠지만, 이 연산자는 새로운 값을 생성하는 것이지, 기존의 피연산자를 변경하진 않는다. var x = 1; //++ 연산자는 피연산자..
자바스크립트의 데이터 타입은 총 8가지를 가진다. (ES11 에서 새로운 원시값 BigInt 가 추가되었다. 기존 숫자값의 최대치보다 더 큰 숫자를 표현할때 사용된다.) 구분 데이터타입 설명 원시 타입 숫자 타입(number) 숫자, 정수와 실수 구분 없이 하나의 숫자 타입 문자 타입(string) 문자열 불리언 타입(boolean) 논리적 참(true)과 거짓(false) undefined var 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 심벌 타입 ES6에서 추가된 7번째 타입 bigint 타입 ES11에서 추가된 8번째 타입 객체 타입 객체, 함수, 배열 등 6-1. 숫자타입 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다. 모든 ..
5-1. 값 값(value)은 표현식(expression) 이 평가(evaluate)되어 생성된 결과를 말한다. 표현식이 평가된다? 표현이 생소하다. 우선 평가가 된다는 표현으로 보아 누군가에 의해 행해짐을 알 수 있고, 그로 인한 결과물을 값이라 표현하는 것으로 해석할 수 있겠다. 표현식은 무엇인가? 식이라 하면 수학시간에 배웠단 연산식이 예시로 떠오른다. 그렇다면 연산식이 누군가에 의해 평가 되어 해석된 결과를 값이라고 판단한다면, 이를 자바스크립트에 적용해보면 될듯 싶다. 10 + 20; // 30 10 + 20 이라는 표현식(소스코드) 를 자바스크립트가 평가 하여 그 결과인 30을 생성한다. 이때 30이 값이다. 모든 값은 데이터 타입을 가지며, 메모리에 2진수 비트의 나열로 저장된다. 뭐 010..
이 포스트는 [모던 자바스크립트 Deep Dive] 서적을 기반으로 정리한 글입니다. 다시 한번 돌아가서, 조금 급한 마음으로 학습을 진행하고, 프로젝트를 진행하느라 예전에 공부했었던 자바스크립트가 가물가물하다. 사실 뭐 얼마나 지났다고 벌써부터 이런건지 당황스럽지만, 인간은 망각의 동물이 아니던가? 체념하고 다시 더 깊숙히 공부를 해보자. 마침 좋은 책이 있어서 이 책을 기반으로 정리하는 식으로 글을 작성해보려 한다. 조금은 간략하게 작성할 수 있겠지만, 추가할 내용이 있으면 추가하고 사실 이 책 하나만 제대로 파고 공부해도, 충분히 자바스크립트에 대하여 다질 수 있을 것이라 생각하여 매일같이 공부를 해보고자 한다. 분량이 많은 편이기에, 길게 잡고 공부를 이어가보자. 4-1. 변수란 무엇인가? 간단한..