Javascript Type, Javascript Variable   자바스크립트 타입, 자바스크립트 변수

(2018-10-23)

변수 , 데이터 타입 , 타입 , 데이터형

1. 자바스크립트 변수

  ㅇ 명시적인 변수 선언은, 
     - `var` 라는 예약어 하나로 가능
        . [참고] ECMAScript 6 부터는, let,const도 가능

  ㅇ 변수명 규칙 
     - ①  `영문자, $, _` (3 종류) 만으로 시작해야 함
     - ②  대소문자 구분
     - ③  다만, 각 변수가 유일한 이름 만 있으면 됨


2. 자바스크립트 변수 타입 종류자바스크립트 변수에는, 명시적인 타입이 없음
     - 자바 언어,C 언어의 int,double 등과는 달리,
        . 변수를 미리 규정하는 `정적 타입`이 없고, 
        . `동적 타입`이라고해서 실행 도중(값을 할당할 때) 정해짐
        . 즉, 자동 형변환 됨

  ㅇ 자바스크립트 변수 타입 구분 
     * 명시적인 타입 구분 대신에 개념적으로 다음과 같이 구분을 함 (느슨한 타입)
     - 기본 타입/원시 타입 (primitive type,built-in type)
        . 종류 : 문자열 타입,숫자 타입,불리언 타입,null 타입,undefined 타입,symbol 타입 (6개)
           .. undefined 타입 : 변수선언 만 되고 값이 주어지지 않은 경우
           .. null 타입      : 선언변수가 null 값(값을 정할 수 없음, 0/0 등)으로 된 것
           .. symbol 타입    : (ECMAScript 6에 신규로 추가)
        . 특징 : 스택 메모리에 저장됨. 그 자체가 값을 나타냄.
           .. 단 하나의 값 만 가짐, 불변 임, 고정 크기를 가짐.
        . 확인 : typeof 변수; => 변수 타입에 따라 string,number,boolean,undefined 등을 리턴함

     - 객체 타입 (object type) 또는 참조 타입 (reference type)
        . 종류 : Object object,Array object,Date object,RegExp object,Function object 등
        . 특징 : 동적 바인딩되므로 실행 중에도 그 값이 변할 수 있음
           .. 여러 복잡한 값들을 가질 수 있음(즉,복합 데이터 타입), 변할 수 있음.
        . 확인 : typeof 객체; => object 를 리턴함, typeof 함수; => function 를 리턴함
        . 참조 타입 (reference type) 이란?
           .. 해당 메모리 영역을 가리키는(참조하는) 메모리 번지가 저장되는 타입을 말함


3. 자바스크립트 변수 타입 특징자바스크립트 변수에는 엄격한 타입 구분이 없음 (느슨한 타입)
     - 다만, 각 변수가 유일한 이름 만 있으면 됨
     - 즉, 자바스크립트 변수는 특정 시간에 특정 값을 가리키는 이름 자체일 뿐,
        . 변수 값과 데이터 타입은 실행 중에 얼마든지 바뀔 수 있음
        . 동적 바인딩으로 개체 참조(연관,association)가 실시간으로 이루어짐
        . 例) 변수.메소드() 일 때, 
           .. 변수가 문자열형이면 문자열String 객체에 있는 메소드가 실행됨
           .. 변수가 숫자형이면 숫자형 Number 객체에 있는 메소드가 실행됨

  ㅇ 변수에 타입을 규정하는 특별한 구문이 없음
     - var 이라는 변수 선언 예약어 하나로 가능
        . 즉, 변수 선언자료형(Data Type)이 미리 주어지지 않음 (변수 자료형 미선언)
        . 단, var 연산자지역 변수로써 만 정의함을 의미

  ㅇ 변수 타입(Data Type) 검사 등이 엄격하지 않음
     - 변수에 임의 타입의 값을 대입 가능 
     - 변수가 임의 타입의 객체를 참조할 수도 있음
     - 사용 전에 반드시 변수 선언할 필요도 없음
   

4. 자바스크립트 타입 구분 및 판단하기 例

  ※ ☞ 자바스크립트 타입 구분 참조
     - number, string, boolean, undefined, object, function 등


5. 자바스크립트 형 변환 例)

  ㅇ 암묵적 형 변환
     - `+` 연산자        : 피 연산자들을 문자열형변환   (수치 → 문자열)
     - `-`,`*` 연산자    : 피 연산자들을 수치로 형변환     (문자열 → 수치)
     - `+` 단항 연산자   : 피 연산자를 수치로 형변환
     - `!` 단항 연산자   : 피 연산자를 Boolean으로 형변환하고, 부정(negate) 연산을 함
     - `==` 비교 연산자  : 우선, 형변환을 해보고, 그 다음에 비교 과정을 수행함
        . 단, 기본 타입의 경우에는 저장된 값에 대해 형변환 후 비교를 수행하지만,
              참조 타입의 경우에는 저장된 값이 주소이므로, 비교 수행이 별 의미없음
     - `===` 비교 연산자 : 형변환을 수행하지 않고, 엄격한 비교 과정을 수행함

  ㅇ 암묵적인 형변환 결과, false로 간주되는 값들
     - 빈 문자열 (''),  0,  NaN,  null,  undefinded  =>  false
     - 즉, 조건문이나, Boolean() 함수를 쓰면 그 결과는 false로 출력

  ㅇ 대부분, 암묵적인 자동 형 변환을 하지만, 때때로 명시적인 형 변환을 하려면,
     - 주로, Boolean(),Number(),String(),Object() 함수를 많이 이용함

  ㅇ 수치형으로 명시적인 형변환 
     - Number()
     - 문자열정수형변환 : parseInt()
     - 문자열실수형변환 : parseFloat()
     - `-`,`*` 연산자


6. 자바스크립트 변수 스코프, 변수 끌어올림/호이스팅(Hoisting)자바스크립트 변수는, 그 유효 범위(스코프)에 따라 전역 변수,지역 변수로 구분
     - 지역 변수는, 반드시 var 선언이 필수적

  ㅇ 함수라는 단위변수 스코프가 정해짐

  ㅇ 변수 호이스팅(Hoisting) : 변수 선언의 끌어올림
     - 중간 부분에서 변수 선언을 하여도, 
     - 마치 그 변수가 첫머리에 선언된 것 처럼 취급됨
     * 이는, 자바스크립트 고유한 특성으로 다른 프로그래밍 언어와는 차별됨

  ㅇ 블록 유효 범위 선언자                                                ☞ 블록 구조 참조
     - let   : 블록 유효 범위(중괄호 {}) 내에서, 지역 변수의 선언자 (var와 사용법이 같음)
     - const : 블록 유효 범위(중괄호 {}) 내에서, 한 번 만 할당할 수 있는 상수 변수 선언


[JS 변수,타입] 1. JS 변수,타입 2. JS 타입 구분
  1.   기술공통
  2.   기초과학
  3.   진동/파동
  4.   방송/멀티미디어/정보이론
  5.   전기전자공학
  6.   통신/네트워킹
  7.   정보기술(IT)
        1. 정보기술
    1.   전산기초
    2.   컴퓨터구조
    3.   프로그래밍
          1. 프로그램,프로그래밍
      1.   프로그래밍 언어론
      2.   객체지향
      3.   자료구조
      4.   알고리즘
      5.   자료표현(알파벳/코드)
      6.   시스템 소프트웨어
      7.   프로그래밍언어 종류
            1. 프로그래밍 언어
            2. 어셈블리언어
        1.   C
        2.   자바(Java)
        3.   자바스크립트
              1. JavaScript
              2. JS 연산자
              3. 기초 문법
          1.   JS 변수,타입
          2.   JS 이벤트
          3.   JS 함수
          4.   JS 객체
          5.   JS 배열
          6.   JS 활용
          7.   jQuery
        4.   PHP
        5.   (기타 언어)
      8.   프로그래밍 기타일반
    4.   데이터베이스
    5.   소프트웨어 공학
    6.   운영체제
    7.   정보보호/보안
    8.   IT 기타기술
  8.   공업일반(기계,재료등)
  9.   표준/계측/품질
  10.   기술경영

 
        최근수정     요약목록(시험중)     참고문헌