[javascript] Data Type

mook9288·2021년 1월 10일
0

javascript 기초 정리

목록 보기
1/9

Data Type

변수에 담을 수 있는 존재는 모두 ""이라고 할 수 있다.
""들은 여러 가지 종류가 있고, 그 종류에 따라 7가지로 분류할 수 있다.

숫자(Number)

"(큰 따옴표) 혹은 '(작은 따옴표)가 붙지 않은 숫자는 숫자로 인식한다.
사칙연산 보다 좀 더 복잡한 연산도 지원한다.

Math.pow(3,2);       // 9,   3의 2승 
Math.round(10.6);    // 11,  10.6을 반올림
Math.ceil(10.2);     // 11,  10.2를 올림
Math.floor(10.6);    // 10,  10.6을 내림
Math.sqrt(9);        // 3,   3의 제곱근
Math.random();       // 0부터 1.0 사이의 랜덤한 숫자

Special numbers

값을 표기해주는 특별한 키워드(숫자)

-0
NaN
Infinity
-Infinity

NaN

0/0과 같은 연산의 결과로 만들어지는 특수한 데이터 형인데 숫자가 아니라는 뜻이다.
전역 객체의 속성이고, 최신 브라우저에서 NaN은 설정 불가, 쓰기 불가 속성이다.
Not-A-Number으로 숫자가 아님을 나타낸다. NaN의 초기값은 Number.NaN의 값과 같다.

function sanitise(x) {
  if (isNaN(x)) { return NaN; }
  return x;
}
console.log(sanitise('1')); // "1"
console.log(sanitise('NotANumber')); // NaN

NaN은 다른 모든 값과 비교(==, !=, ===, !==)했을 때 같지 않으며, 다른 NaN과도 같지 않다.
NaN의 판별은 Number.isNaN() 또는 isNaN()을 사용한다.

isNaN()과 Number.isNaN()의 차이
isNaN은 현재 값이 NaN이거나, 숫자로 변환했을 때 NaN이 되면 참을 반환
Number.isNaN은 현재 값이 NaN이어야만 참을 반환

isNaN('hello world'); // true
Number.isNaN('hello world'); // false

Infinity

무한대를 나타내는 숫자값으로 전역 객체의 속성이고 전역 스코프의 변수다.
Infinity의 초기값은 Number.POSITIVE_INFINITY이고, Infinity(양의 무한대)는 다른 어떤 수보다 더 크다.

isInteger

정수인지 판별후 true / false 값을 반환한다.

Number.isInteger(0);      // true
Number.isInteger(1);      // true
Number.isInteger(-100);   // true
Number.isInteger(345363); // true
Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false
Number.isInteger(NaN);       // false
Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger('10');      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

문자(String)

문자는 "(큰 따옴표) 혹은 '(작은 따옴표) 중의 하나로 감싸야 한다.
큰 따옴표로 시작하면 큰 따옴표로 끝나야하고, 작은 따옴표로 시작하면 작은 따옴표로 끝나야 한다.
문자열끼리 비교가 가능하다.

문자열 숫자로 변환

Number 객체 사용한다.

var myString = '123';
var myNum = Number(myString);
typeof myNum;

숫자를 문자열로 변환

toString() 함수 사용한다.(숫자를 동등한 문자열로 변환)

var myNum = 123;
var myString = myNum.toString();
typeof myString;

문자열 Eescape

escape(이스케이프) 문자란 어떤 한 문자를 코드가 아닌 문자열로 만들어주는 문자입니다. 역슬래시 ( \ )를 문자 바로 앞에 작성함으로써 코드가 아닌 문자열로 인식하게 한다.

문자의 결합

문자열을 결합하려면 숫자 연산자와 동일하게 더하기(+) 연산자를 사용한다.(변수와 문자열을 혼합할 수도 있음)

alert("coding"+" everybody"); // 결과 : coding everybody
alert("coding everybody".length) // 결과 : 16

concat()
매개변수로 전달된 모든 문자열을 호출 문자열에 붙인 새로운 문자열을 반환한다.

var str1 = 'Hello';
var str2 = 'World';
console.log(str1.concat(' ', str2)); // expected output: "Hello World"
console.log(str2.concat(', ', str1)); // expected output: "World, Hello"

객체로 문자열 지정

문자열의 길이

.length property 문자의 길이를 구할 때 문자 뒤에 붙임

특정 문자열 찾기

Index 위치로 접근할 수 있다.
대괄호 표기법을 이용해서 변수명 끝에 대괄호를 붙이고 안에는 구하고 싶은 문자의 숫자를 포함시킨다.(0부터)

dataType[0];

문자열 내부의 하위 문자열 찾기

indexOf(), slice() 사용한다.

대/소문자 변경

toLowerCase()와 toUpperCase()는 문자열을 가져와 모두 대문자나 소문자로 변경한다.

문자열의 일부를 변경하기

Index를 이용해 특정 문자열을 찾아 문자를 변경할 수 없다.
replace() 를 통해 다른 하위 문자열로 바꿀 수 있다.

var dataType = 'hello';
dataType[1] = 'o';
console.log(dataType); // "hello"
dataType.replace("e", "test") // "htestllo"
// .replace('원래 문자','변경될 문자');

Boolean(true/false)

단두가지 true와 false만 존재한다. 조건문에서 핵심적인 역할을 담당한다.

alert(true == 1);               //true
alert(true === 1);              //false
alert(true == '1');             //true
alert(true === '1');            //false
alert(0 === -0);                //true
alert(NaN === NaN);             //false

Boolean의 대체제

조건문에 사용될 수 있는 데이터 형이 꼭 Boolean만 되는 것은 아니다. 관습적인 이유로 0는 false 0이 아닌 값은 true로 간주된다.
아래 코드는 선호하지 않는다.

if(0){ alert(1) }
if(1){ alert(2) } // 2

Null

값이 없다는 의미로, 값이 없음을 명시적으로 표시한 것이다.
있다가 없어진 값일 수도 있고, 애초에 없을 수도 있다.
없는 값을 나타내고 싶을 때 프로그래머는 undefined를 넣지 말고 null값을 입력한다.

프로그래머가 값을 없는 상태로 의도적으로 부여한 상황

typeof(null); // "object"

Undefined

값이 없다라고도 할 수도 있지만 정확하게는 값이 정의되어 있지 않다는 의미다.(그냥 값이 없음)
어떤 변수의 값이 아직 할당되어지지 않았음을 의미한다.
직접 undefined를 할당하는 경우는 없어야 한다.

프로그래머가 의도하지 않은 상황

Object Type

자바스크립트에서는 모든 것이 객체이다. 일반 객체 뿐 아니라, 함수(Function)와 배열(Array)도(특수한 객체) 객체에 포함된다.
객체는 하나의 그룹 안에 관계되는 기능(함수)들을 모아놓은, 관련된 데이터와 함수 집합이자 배열과 유사한 역활을 한다.

var obj = {
  a : {
    bb: 'bbb',
    cc: 'ccc'
  },
  d: function() { ... }
}

변수에 중괄호({})로 감싼 덩어리가 객체이고, 선호/권장한다.(캡슐화)
객체 안의 콤마(쉼표 ,)로 구분되는 것들을 객체의 속성(Property)라고 부른다.

중괄호({})를 사용하여 만든 객체를 객체 리터럴(Object Literal)이라고 부른다.
객체 리터럴을 사용해서 객체를 생성하는 것은 연속된 구조체나 연관된 데이터를 일정한 방법으로 변환하고자 할 때 많이 쓰이는 방법이다.

Symbol Type

ES6에서 추가되었다.


🔎 참고자료 🔎
- MDN
- 생활코딩
- PoiemaWeb
- javascript info
- 코어 자바스크립트
- 러닝 자바스크립트
- 인사이드 자바스크립트

0개의 댓글