[자바스크립트] 자바스크립트 데이터 타입과 연산자

자바스크립트의 값은 크게 기본타입참조타입으로 나뉜다

1. 자바스크립트 기본 타입

기본타입 : 숫자, 문자열, 불린값, null, undefined

자바스크립트는 느슨한 타입 체크 언어이다. 엄격한 타입 체크 언어인 C언어는 변수를 선언할 때 변수에 저장할 데이터 종류에 따라 예약어를 이용해서 변수의 데이터 타입을 지정해야한다. 하지만 자바스크립트는 변수를 선언 할 때 타입을 미리 정하지 않고, var라는 한가지 키워드로만 변수를 선언한다

// 숫자타입
var intNum = 10;
var floatNum = 0.1;

// 문자열 타입
var singleQuoteStr = 'single quote string';
var singleChar = 'a';

// 불린 타입
var boolVar = true;

// undefined타입
var emptyVar;

//null 타입
var nullVar = null;

console.log(
    typeof intNum,
    typeof floatNum,
    typeof singleQuoteStr,
    typeof singleChar,
    typeof boolVar,
    typeof emptyVar,
    typeof nullVar
);

2. 자바스크립트 참조 타입(객체 타입)

  • 기본타입을 제외한 모든 값은 객체 / 배열, 함수, 정규표현식 등 모두 객체다
  • 객체는 단순히 이름(key):값(value) 형태의 프로퍼티들을 저장하는 컨테이너로서, 컴퓨터 과학 분야에서 해시라는 자료구조와 상당히 유사하다
  • 기본타입은 하나의 값만을 가지는데 비해, 참조타입의 객체는 여러개의 프로퍼티를 포함할수 있으며,
  • 객체의 프로퍼티는 기본 타입의 값을 포함하거나, 다른 객체를 가리킬 수도 있다. 이러한 프로퍼티의 성질에 따라 객체의 프로퍼티는 함수로 포함할 수 있으며, 자바스크립트에서는 이러한 프로퍼티를 메서드라고 부른다.

2.1 객체 생성

자바처럼 클래스라는 개념이 없고, 객체 리터럴이나 생성자 함수 등 별도의 생성방식으로 크게 3가지 있다

2.1.1 Object() 생성자 함수 이용

//Object()를 이용해서 foo 빈 객체 생성
var foo = new Object();

// foo 객체 프로퍼티 생성
foo.name = 'foo';
foo.age = 30;
foo.gender = 'male';

console.log(typeof foo);  // (출력값) object
console.log(foo);  // (출력값) hello_javascript.js:47  Object age: 30 gender: "male" name: "foo"

2.1.2 객체 리터럴 방식 이용

리터럴이란?
표기법이라고 생각하면된다
객체리터럴(=객체를 생성하는 표기법)

· 객체 리터럴은 중괄호를 이용해서 객체생성, {}안에 아무것도 적지 않은 경우는 빈 객체가 생성,
· 중괄호 안에 "property 이름":"property 값" 형태로 표기하면, 해당 프로퍼티가 추가된 객체를 생성 할 수 있다
· property이름은 문자열이나 숫자가 올수 있다
· property값은 자바스크립트의 값을 나타나내는 어떤 표현식도 올수 있으며, 이 값이 함수일 경우 이러한 프로퍼티를 메서드라고 부른다

// 객체 리터럴 방식으로 객체 생성
var foo = {
   "name" : "foo",
   "age" : 30,
   "gender" : "male"
}

2.1.3 생성자 함수 이용

to be continue...

2.2 객체 프로버티 읽기/ 쓰기 / 갱신

객체의 property에 접근하는 두가지 방법
1. 대괄호 표기법([]) : 객체의 프로퍼티를 문자열의 형태로 만든다음 대괄호를 둘러싸면된다. 대괄호안에 ''가 빠지면 출력이 안됨
2. 마침표(.) 표기법 : 객체 다음에 마침표를 찍고 원하는 속성값을 적음

var foo = {
    name : 'foo',
    major : 'conputer seience'
}
// 객체 property 읽기
console.log(foo.name);
console.log(foo['name']);
console.log(foo.nickname);

// 객체 property 갱신
foo.major = 'electronics engineering';
console.log(foo.major);
console.log(foo['major']);

// 객체 property 동적 생성
foo.age = 30;
console.log(foo.age);  // 객체가 생성된 후에도 동적으로생성후 속성값을 할당할수 있다.

// 대괄호 표기법반을 사용해야할 경우
foo['full-name'] = 'foo bar';
console.log(foo['full-name']);
console.log(foo.full-name);   // (결과값) NaN    ,  -를 표현식으로 오해
console.log(foo.full);
console.log(foo.name);

2.3 for in 문과 객체 프로퍼티 출력

for in문을 사용하면, 객체에 포함된 모든 속성에대해 루프를 수행 할 수 있다.

var prop;
for(prop in foo){
    console.log(prop,foo[prop])
}

좋은 웹페이지 즐겨찾기