식별자(Identifier)
- 시스템 정의 식별자(예약어, 키워드)
자바스크립트에서 먼저 정의한 식별자이다. - 사용자 정의 식별자
자바스크립트 개발자가 정의한 식별자로, 변수, 함수, 생성자, 객체 정의 시 사용하는 이름을 말한다.
- 사용자 정의 식별자의 명명 규칙
첫 문자는 반드시 영문자, _(underscore), $로 시작한다.
자바스크립트는 대소문자를 구별한다.
시스템 정의 식별자(예약어, 키워드)는 사용이 불가능하다.
자바스크립트의 데이터형(Data Type)
- 기본(원시) 데이터형(primitive data type: PDT)
- 수치 데이터: 정수, 실수("number"로 관리)
- 문자 데이터: 문자, 문자열("string"으로 관리)
"", ''를 사용해 표현함
- 논리 데이터: true, false("boolean")
- undefined: 변수에 초기화되지 않아 정의되지 않은 상태
- null: 초기화는 됐으나 객체가 없는 상태 - Infinite(양의 무한대) - 참조 데이터형(reference data type: RDT)
- 객체형(배열 포함), 함수형
변수(variables)
- 변수는 프로그램에서 사용하는 데이터(리터럴)을 저장하는 용도로 사용한다.
- 저장된 데이터는 언제든지 변경이 가능하여 '변수'라고 한다. 바꿀 수 없는 데이터는 '상수'라고 한다.
- 기본형 데이터를 저장하면 기본형 '변수', 참조형 데이터를 저장하면 참조형 '변수'이다.
변수 사용 방법
1. 변수 선언
var 변수명; //파싱 단계에서는 undefined 값이 할당됨
2. 초기화
변수명 = 값; //런타임 시 지정된 값으로 할당됨
변수의 특징
- 실행단계에서 변수의 데이터형이 지정되므로, 데이터형을 지정하지 않는다.
데이터 타입에 상관없이 저장 가능하다. - 함수 단위로 scope가 정해진다.(블록 단위가 아님)
- var를 지정하지 않으면 전역 scope(전역객체 window)에 변수가 동적으로 정의된다.
즉, var를 지정하지 않으면 파싱 단계까 아닌 런타임 시 변수가 동적으로 정의된다. - 데이터 타입을 철저하게 검사하지 않으므로, 타입 변환이 자유롭다.
//예
var test = 10; //number타입
test = "이순신"; //string 타입
test = true; //boolean 타입
데이터 형 변환
자바스크립트에서는 필요에 따라 데이터가 자동 형 변환된다.
- *, /, - 를 사용하는 경우( +(덧셈) 연산자는 제외)
//예
var test = "10" * 3; // test = 200
- boolean값으로 변환되는 경우
아래의 5가지 데이터는 false로 자동 변환되며, 반대로 이 5가지 외의 데이터는 true 값으로 변환된다.
1. 0
2. ''
3. NaN
4. null
5. undefined
//예
var n = 0;
if(n) { } //if 뒤에서 n은 false로 변환, 동작됨
var name = "이순신";
if(name) { } // true로 변환, 동작됨
데이터 형 검사
실행 중 변수에 설정된 데이터형을 검사하는 방법이다.
문법) typeof (변수) 또는 typeof 변수
예)
var name = "이순신"; -> if (typeof (name) == 'string') {}
var number = 20; -> if ( typeof age == 'number') {}
var array = [1, 2, 3]; -> if ( typeof array == 'object') {}
변수의 유효범위와 끌어올림(hoisting)
자바스크립트에서 함수 내부에 선언된 모든 변수는 함수 전체에 걸쳐 유효하다.
즉, 변수가 선언되기 전에도 유효한데, 이러한 특징을 비공식적으로 '끌어올림(hoisting)'이라고 한다.
자바스크립트 코드는 함수 내부에 있는 모든 변수를 함수 맨 꼭대기로 끌어올린 것처럼 동작한다.
(이때 함수 내부의 변수들은 선언만 되고 초기화는 아직 안 된 상태)
아래 코드를 보면, line 9에서 console.log(str)를 통해 str 변수를 콘솔창에 출력하도록 하고 있다.
str 변수는 line 10에서 선언되고 있으므로, line 9에서는 변수가 아직 선언되지 않았지만 hoisting으로 동작한다.
다만 선언만 되고 초기화되지 않은 상태이므로, 콘솔창에는 undefined가 출력된다.
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JavaScript] DOM 및 Form 객체 (0) | 2020.09.13 |
---|---|
[JavaScript] 함수 (0) | 2020.09.13 |
[JavaScript] 문장(Statement) (0) | 2020.09.13 |
[JavaScript] 연산자 (0) | 2020.09.13 |
[JavaScript] JavaScript 개요 (0) | 2020.09.08 |
댓글