메모리에 값을 저장하기 위해서 먼저 메모리 공간을 확보해야 할 메모리의 크기를 알아야한다. 이는 값의 종류에 따라 확보해야 할 메모리의 크기가 다르기 때문이며, 이때 값의 종류, 즉 데이터의 종류를 데이터 타입이라고 한다.
프로그래밍 입문자에게 가장 익숙한 데이터 타입은 숫자와 문자일 것이며, 프로그래밍 언어에서 사용할 수 있는 데이터로 숫자, 문자열, 불리언 등의 종류가 있다.
- 자바스크립트의 모든 값은 데이터 타입을 갖는다.
- 자바스크립트에서 제공하는 데이터 타입으로는 크게 원시 타입과 객체 타입으로 구분할 수 있다.
자바스크립트의 number 인식
alert(1+1);
숫자를 변수에 담기
let number = 1;
산술 연산과 비교 연산
- 산술 연산 (arithmetic operators) 1 + 3; // 더하기 6 - 4; // 빼기 2 * 7; // 곱하기 7 / 8; // 실수 나누기 14 % 3; // 나머지 2 ** 3; // 거듭제곱 - 비교 연산 (comparison operators) 2 < 3; // 작다 4 > 1; // 크다 3 <= 3; // 작거나 같다 6 >= 7; // 크거나 같다 5 === 5; // 같다 8 !== 9; // 같지 않다
같은 수 판별
let one = 3; let two = 3; console.log(one === two); // true
값의 종류를 판단
typeof operand typeof(operand)
3가지 특별한 값들의 표현
const infinity = 1 / 0; // 양의 무한대 console.log(infinity); // Infinity const negativeInfinity = -1 / 0; // 음의 무한대 console.log(negativeInfinity); // -Infinity const nan = 1 * 'string'; // 산술 연산 불가 console.log(nan); // NaN
자바스크립트의 string 인식
alert("coding everybody"); alert('coding everybody'); alert(typeof "1") // string
char
형이 존재하지 않아 "
혹은 '
중 어떤 것으로 감싸도 문자열로 만들어진다.문자열 붙이기
let a = "im"; let b = "seul"; let result = a + b; console.log(result); // "imseul"
+
기호를 사용하여 문자열을 붙일 수 있다.문자의 길이 구하기
let a = "coding everybody"; console.log(a.length); // 16 console.log("coding everybody".length); //16 (공백도 포함한다)
.length
를 붙인다.이스케이프 기법
alert('egoing\'s javascript') // string
\
를 '
앞에 위치시키면 '
를 문자열의 시작과 끝을 구분하는 구분자가 아니라 단순히 문자로 해석하도록 강제 할 수 있다. 이러한 기법을 이스케이프(escape)라고 한다.문자열 인덱스
let a= "abcdef"; console.log(a[0]); // "a" console.log("seul"[2]); // "u"
JS의 string(문자열) 타입
var str = 'Hello'; str = 'world';
템플릿 리터럴 (template literals)
1) 백틱(` `)으로 감싼다 2) ${expression}로 표현식에 변수, 표현식을 넣는다 ex.) const brendan = 'brendan'; const greeting = 'hello ' + brendan; console.log(`value: ${greeting}, type: ${typeof greeting}`); //value: hello brendan, type: string
template literals : ``(백틱)기호를 이용해서 원하는 스트링을 적고, $와 {} 기호를 사용한다.
✍️ 결과를 보면 ('value: ' + helloBob + 'type: ' + typeof helloBob); 으로 안쓰고 위와 같이 써도 된다는 걸 알 수 있다! 😚
false
: 0, null, undefined, NaN, ' '(비어있는 문자열)true
: any other value. false 이외의 값들이다. (1이나 string 등등 전부 포함한다.)ex1.) let canRead = true; console.log(typeof canRead); // boolean ex2.) let test = 3 < 1; console.log(`value: ${test}, type: ${typeof test}`); // value: false, type: boolean
(4) undefined
let x = undefined; 혹은 let x; ex) let aa; console.log(aa); // undefined
(5) null
// type of를 사용 했을 때 ▼ let aoo = null; console.log(typeof aoo); // object // 일치 연산자(===)를 사용 했을 때 ▼ let aoo = null; console.log(typeof aoo === null); // false console.log(aoo === null); // true
❗️ undefined 와 null 의 차이
undefined
: 단어의 의미 그대로 정의되지 않음이라는 뜻이며 값이 대입되지 않은 상태를 위해 많이 사용된다. (어떤 변수를 만들고 그 값을 정의해주지 않았을 때 사용된다.)
null
: 의도적으로 값이 없음을 표현하고 싶을 때 대입해주곤 한다.
(6) symbol
// 심볼 key는 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키 let key = Symbol('key'); console.log(typeof key); // symbol // 스트링이 동일해도 다른 심볼이다. const symbol1 = Symbol('id'); const symbol2 = Symbol('id'); console.log(symbol1 === symbol2); // false
객체는 데이터와 그 데이터에 관련한 동작(절차, 방법, 기능)을 모두 포함할 수 있는 개념적 존재이다. 달리 말해, 이름과 값을 가지는 데이터를 의미하는 프로퍼티(property)와 동작을 의미하는 메소드(method)를 포함할 수 있는 독립적 주체이다.
JavaScript는 객체 기반의 스크립트 언어로써 JavaScript를 이루고 있는 거의 모든 것이 객체이다. 원시 타입을 제외한 나머지 값들(배열, 함수, 정규표현식 등)은 모두 객체이다. 또한 객체는 참조에 의한 전달 (pass-by-reference)방식으로 전달된다.
reference
MDN data type-PoiemaWeb Coding Everybody wiki W3School dream coding