programming/beginner

[js] datatype (literal, string, number, array, object, null, undefined)

솧이 2022. 9. 11. 19:51

 값을 갖고 있는 5개 타입

number : 숫자 타입

string : 문자열 타입

boolean : 논리 타입 (true, false)

object : 객체 타입

function : 함수 타입

 

  6가지 object 타입

object : 객체

array : 배열

date

string

number

boolean

 

  값을 갖고 있지 않은 타입 2가지

undefined : 타입이 지정되지 않음

nul : 데이터가 없는 object

 

* js는 dynamic type을 지원하는 언어이다. 그 때 그 때 타입이 변하는 언어!

 

 

 

 리터럴 (literal)

@ 리터럴 이해하기 : https://tiboy.tistory.com/685 

리터럴은 변수의 형(type)을 정한다. 변수 초기화에 종종 사용된다.

let s = "cat";
let array = [1, 2, 3];

필요한 요소들을 열거하는 것만으로 객체를 만들 수 있다

var obj = {
    first_name : 'hong',
    last_name : 'sohyun',
};

예제와 같이 우항에 표기한 문자 그대로 자신을 나타내는 값이다

리터럴에는 배열, boolean, 숫자, 부동 소수점, 문자열, 정규식, 객체 리터럴이 있다

 

 

문자열 리터럴

 js의 문자열 리터럴은 홑따옴표나 쌍따옴표로 감싼다

 

 

 숫

* 소수점이 출력되지 않는다

console.log(34.00);

 

* 덧셈만 숫자가 문자열로 바뀐다

let x;
x = "10" + 10; 
console.log('x=', x, typeof(x)); //1010 string (number 10 => string "10")

x = "10" * 10; 
console.log('x=', x, typeof(x)); //string "10"이 number 10으로 바뀌었다

x = "10" - 10; 
console.log('x=', x, typeof(x)); //0 number

x = "10" / 10; 
console.log('x=', x, typeof(x)); //1 number

x = "10" > 10; 
console.log('x=', x, typeof(x)); //false boolean

x = "a" + 10;
console.log('x =', x, typeof(x)); //NaN number이 나온다 

x = 10 / 0;
console.log('x =', x, typeof(x)); //x = Infinity number 실행돼서 이렇게 나온다 에러 안뜬다

 

 

▷ 논리형 (boolean) 

Boolean타입의 값은 논리적 참, 거짓을 나타내는 true  false 뿐이다.

주로 조건문에 자주 사용하며 0, -0, null, false, NaN, undefined, 빈 문자열 ("") false로 간주된다.

문자열 "false"를 포함한 그 외 모든 다른 값은 초기값을 true로 설정한다.

 

*Boolean 사용 시, 주의할 점

var o = new Boolean(true); // 이렇게 만들어 사용하면 안된다
var t = true; // 항상 이렇게 사용하기

 

 

배열 (array)

배열(array) object 타입 중 하나이다

[ ... ] bracket으로 감싸고 그 안에 배열 원소(item) 들이 콤마로 나열된다

let x;
x = [10, 20, 30]; // x라는 변수에 number 타입의 10, 20, 30 3개가 배열 원소로 담긴다
console.log(x[0], x[1], x[2]);
console.log(x[3]); // undefined가 뜬다(값이 정의되지 않는다). error가 뜨지 않는다
console.log("x.length=", x.length); //배열.length <- 배열 원소의 개수

x = []; // empty 배열

 

* 마지막 원소 뒤에 , (콤마) 가능하다. java, c언어에서는 에러가 난다

x = [
    100,
    200,
    300,
    400, 
];

 

 

▷ 오브젝트, 객체 (object)

{ ... } curly brace로 감싸고 name:value 쌍이 콤마로 구분되어 나열된다

name:value 쌍을 object의 property 라고 한다

const person = {firstName : "John", lastName : "Doe", age : 50, eyeColor : "blue"};
console.log('person =', person, typeof(person));

 

- propery name을 사용하여 value에 접근하는 방법

// 방법1
console.log(person['firstname']);

// 방법2
console.log(person.firstname);

 

* 없는 proerty name에 접근하면 undefined가 뜬다

console.log(person.address); // undefined

 

 

 empty, null

null은 의도적으로 변수에 값이 없다는 것을 명시할 때 사용한다

javascript는 대소문자를 구별하므로 null은 Null, NULL 등과 다르다

 

주의할 점!

type을 나타내는 문자열을 반환하는 typeof 연산자로 null 값을 연산해보면 null이 아닌 object가 나온다.

이는 javascript 설계상의 오류이다!

따라서 null type을 확인할 때는 typeof가 아닌 === (일치 연산자) 를 사용해야 한다

x = {};
console.log(x, typeof(x)); // {} object

x= null;
console.log(x, typeof(x)); // null object

 

 

undefined

선언 이후 값을 할당하지 않은 변수는 undefined 값을 가진다

어떤 변수를 만들고 그 값을 정의하지 않거나 존재하지 않은 객체 property에 접근할 경우 undefined가 반환된다

 

 

 

※ null vs undefined

undefined는 값이 대입되지 않은 상태! 어떤 변수를 만들고 값을 정의하지 않을 때 사용된다

null은 undefined와 다르게 명시적으로 값이 없음을 표현하고 싶을 때 대입한다

var obj = {
  name: 'ken'
};

// 위 obj를 이용한 작업을 실행한다

// obj를 이용한 작업이 모두 종료되고,
// 더 이상 사용하지 않을 계획이라 obj를 의도적으로 없다고 표현한다
obj = null;