Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

보근은 참고 있다

JS 데이터 타입과 연산자 본문

Language/JS

JS 데이터 타입과 연산자

보근 2021. 8. 4. 17:16

 

 

 

 

 

 

출처 : https://kimtaehyun98.tistory.com/58

 

 

 

JS는 동적 타입 체크 언어로, 변수를 선언할 때 타입을 따로 지정하지 않으며, 런타임 시점에 변수의 타입이 결정된다. 또, 런타임 시점에 동적으로 변수의 타입이 변경이 가능하기 때문에 변수의 타입을 다른 것으로 변경할 수도 있다.

 

 

 

 

 

기본 타입

이 타입의 변수들은 그 자체가 하나의 값을 나타낸다. JS에서는 이 기본 타입들만이 유일하게 객체(Object)가 아니지만, 기본 타입에서 숫자, 문자열, 불린은 객체로 사용할 수도 있다.

 

  • 숫자
    JS에서 정수와 실수 모두를 Number로 표현한다. JS에서는 숫자를 64비트 부동 소수점 형태로 저장하기 때문에, 정수와 실수를 모두 표현할 수 있다.
    소수점 아래에 값이 없으면 정수처럼 표기를 하고, 소수점 아래에 값이 있으면 소수처럼 표기를 해준다.
  • 문자열
    문자열은 큰 따옴표와 작은 따옴표로 생성할 수 있다. 둘은 용도와 기능이 그냥 똑같다. Backtick도 있는데, 기능이 좀 다르다.
    C나 Java와 다르게 JS는 char형 변수가 없다. 따라서 'a'는 그냥 String이다.
    JS의 문자열은 문자 배열처럼 인덱스를 통해 접근할 수도 있고 또, charAt() 메서드로 접근할 수도 있다. 단, JS의 String도 immutable 하기 때문에, 인덱스를 통해 값을 변경한다거나 할 수는 없다.
  • nullundefined
    두 타입 모두 '값이 비어있음'을 나타낸다. 값이 할당되지 않은 변수의 경우 undefined 타입이고, null의 경우는 명시적으로 비어있음을 나타내는 경우 사용된다.
    undefined는 타입도 값도 undefined이다. 
    null은 값은 null이지만, 타입은 object이다. 때문에, 어떤 변수가 null인지 확인하고 싶을 때는 typeof를 사용하면 안된다. 
var intNum = 10.00;
var floatNum = 0.1;

var singleQuoteStr = 'single quote string';
var doubleQuoteStr = "double quote string";
var singleChar = 'a';

var boolTrue = true;
var boolFalse = false;

var emptyVar;

var nullVar = null;


console.log(
    typeof intNum,          // number
    typeof floatNum,        // number
    typeof singleQuoteStr,  // string
    typeof doubleQuoteStr,  // string
    typeof singleChar,      // string
    typeof boolTrue,        // boolean
    typeof boolFalse,       // boolean
    typeof emptyVar,        // undefined
    typeof nullVar          // object
);

console.log(
    emptyVar === undefined  // true
);

console.log(
    nullVar === null,       // true
    typeof nullVar === null // false
);

 

 

 

 

 

 

 

참조 타입

위의 기본 타입을 제외한 모든 값은 객체이며, 참조 타입이다. JS에서는 배열, 함수, 정규표현식 등을 모두 객체로 표현한다.

객체는 기본 타입과 달리 여러 개의 프로퍼티를 가질 수 있다. 그 프로퍼티는 기본 자료형의 변수, 객체, 함수 등이 모두 올 수 있다. 객체의 프로퍼티인 함수를 메서드라고 부른다.

 

JS에서 객체를 생성하는 방법은 세 가지가 있다.

- new Object()

- 객체 리터럴

- 생성자 함수

 

객체 리터럴은 중괄호( { } )를 이용하여 객체를 생성한다. 중괄호 안에 '프로퍼티 이름 : 프로퍼티 값' 형태로 표기하여 프로퍼티를 추가할 수 있다.

var o1 = new Object();		// new Object()
var o2 = {};			// 빈 객체 리터럴
var o3 = {			// 프로퍼티가 들어간 객체 리터럴
    name: "Bogeun3",
    age: 22,
    isMale: true
};

// 빈 객체에 프로퍼티를 추가함.
o1.name = "Bogeun1";	
o1.age = 20;
o1.isMale = true;

// 빈 객체에 프로퍼티를 추가함.
o2.name = "Bogeun2";
o2.age = 21;
o2.isMale = false;

console.log(o1);		// { name: 'Bogeun1', age: 20, isMale: true }
console.log(o2);		// { name: 'Bogeun2', age: 21, isMale: false }
console.log(o3);		// { name: 'Bogeun3', age: 22, isMale: true }

 

 

 

프로퍼티

JS의 객체는 프로퍼티의 생성, 읽기, 수정, 삭제 등이 가능하다.

 

객체의 프로퍼티에 접근하는 방법은 두 가지가 있다. 

- 대괄호 표기법 ( [ ] )

- 마침표 표기법 ( . )

 

var bk = {
    name: "Bogeun",
    age: 20
};

// 프로퍼티 값 읽기.
console.log(bk.name);               // "Bogeun"
console.log(bk['age']);             // 20
console.log(bk.hahaha);             // undefined

// 프로퍼티 값의 수정.
bk.name = "BMK";
console.log(bk.name);               // "BMK"
console.log(bk['name']);            // "BMK"

// 새로운 프로퍼티를 추가.
bk.hahaha = "hahaha";
console.log(bk.hahaha);             // "hahaha"
console.log(bk['hahaha']);          // "hahaha"

// 프로퍼티를 삭제.
delete bk.hahaha;
console.log(bk.hahaha);             // undefined


// 대괄호 표기법으로만 접근할 수 있는 프로퍼티 이름.
bk["full-name"] = "Bogeun Park";
console.log(bk['full-name'])        // "Bogeun Park"
console.log(bk.full-name)           // NaN

 

NaN은 Not a Number라는 뜻으로, 수치 연산을 해서 정상적인 값을 얻지 못할 때 출력되는 값이다. 위의 예시에서 NaN가 출력된 이유는, full-name의 대시 표시가 마이너스 연산자로 인식돼서 수치 연산으로 인식하여 나온 것이다.

객체의 프로퍼티를 지우는 delete 연산자는 프로퍼티만을 지울 수 있다. 객체 자체를 지우려고 시도해봤자 지워지지 않는다.

 

 

 

for in 문을 사용하면, 객체의 모든 프로퍼티에 대해 루프를 수행할 수 있다.

var bk = {
    name: "Bogeun",
    age: 20,
    isMale: true
};

for(property in bk) {
    console.log(property, bk[property]);
};

// name Bogeun
// age 20
// isMale true

for in 문의 property 변수는 string 타입으로 프로퍼티의 이름을 가진다. 그 이름을 갖고 객체의 프로퍼티 값에 접근하여 출력하는 것이다.

 

 

 

 

 

 

 

'Language > JS' 카테고리의 다른 글

함수 호출과 this  (0) 2021.08.20
JS의 함수  (0) 2021.08.16
JS의 배열  (0) 2021.08.06
Comments