표현식과 데이터 타입

값이란?

값은 식이 평가되어 생성된 결과를 말한다. 모든 값은 데이터 타입을 가지며 메모리에 2진수, 즉 비트의 나열로 저장이된다.

리터럴?

사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.

3 // 숫자 리터럴 이라고 한다.

표현식?

값으로 평가 될 수 있는 문이다. 즉 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다. 리터럴도 값으로 평가된다. 따라서 리터럴도 표현식이다.

문?

문은 프로그램을 구성하는 기본단위이자 최소 실행단위이다. 문의 집합으로 이뤄진 것이 바로 프로그램이다.
문은 여러 토큰으로 구성이 된다. 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본요소를 의미한다.

var sum = 1+2; // var , sum,1,+,2 다 토큰이다. 
// 위의 라인을 통틀어 '문'이라고 한다. 

var x; // 값으로 평가x 따라서 표현식은 아니고 문이다.
x=1+2; // 표현식이면서 완전한 문이다. 

앞으로 자바스크립트를 설명할 때 "문" 과 "표현식" 이라는 용어가 자주 등장할 것이다. 문과 표현식을 구별하고 해석할 수 있다면
자바스크립트 엔진의 입장에서 코드를 읽을 수 있고 실행 결과를 예측하는데 도움이 된다.


데이터 타입

  1. 원시타입: 숫자 , 문자, 불리언, undefined, null, symbol
  2. 객체타입: 객체 , 함수, 배열

숫자 타입

-자바스크립트의 숫자타입은 모든 수를 실수처리
-Infinity:양의 무한대, -Infinity: 음의 무한대,NaN: 산술 연산 불가

문자열 타입

-문자열은 작은따옴표 , 큰따옴표, 백틱 `` 으로 테스트를 감싼다.

불리언 타입

-true, false가 있다.

undefined 타입

-변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined가 된다.

null 타입

-변수에 값이 없다는 것을 의도적으로 명시

변수를 참조할 때 undefined 가 반환된다면 , 참조한 변수가 선언한 이후 값이 할당된 적 없는 즉 초기화 되지 않은 변수라는 것을 간파할수 있다.
자바스크립트 엔진이 변수를 초기화 하는데 사용하는 undefined를 개발자가 의도적으로 변수에 할당하면 undefined의 본래 취지와 어긋날 뿐더러 혼란을 줄 수 있으므로 권장하지 않는다.
변수에 값이 없다는 것을 명시하고 싶을 때는 => null 을 할당을 해준다.

Symbol 타입

변경 불가능한 원시 타입의 값이다. 유일 무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

var key = Symbol("key");  
console.log (typeof key); // symbol

객체 타입

뒤에서 더 자세히 다룰것.
중요한 건 자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체라는 것이다.


데이터 타입의 필요성

  1. 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
    => 값이 숫자이면 8바이트의 메모리공간을 확보

  2. 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해

  3. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해


동적 타이핑

C나 자바 같은 정적 타입 언어는 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 데이터 타입을 사전에 선언해야 한다. 컴파일 시점에 타입체크를 한다. 타입 체크를 통과지 못하면 에러가 난다.

자바스크립트는 정적 타입 언어와 다르게 변수를 선언할 때 타입을 선언하지 않는다.어떠한 데이터 타입의 값이라도 자유롭게 할당할 수 있다.

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정 (타입 추론) 된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.

이러한 특징을 동적타이핑 이라 하며 동적 타입 언어라고 한다.

변수 사용시 주의할 점

  1. 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.

  2. 변수의 유효범위는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다.

  3. 전역변수는 최대한 사용하지 않도록 한다.

  4. 변수보다는 상수를 사용해 값의 변경을 억제한다.

  5. 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍 한다.

좋은 웹페이지 즐겨찾기