1. 값
- 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 (또는 그 공간을 식별하기 위해 붙인 이름)인데, 이 변수에 할당되어 저장되는 것을 값이라 한다.
- 값(value)은 식이 평가 되어 생성된 결과를 말한다. 평가는 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다.
2. 변수에 저장할 수 있는 값 = 데이터 타입
- 모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트의 나열로 저장된다. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다. 예를 들어, 메모리에 저장된 값 0100 001을 숫자로 해석하면 65이지만 문자로 해석하면 'A'다.
- 다음은 7가지의 데이터 타입이다.
- 숫자형 (Number) : 정수와 실수 값을 구분하지 않음
- 문자형 (String) : 작은/큰 따옴표 쌍으로 문자열을 둘러싸서 표
- 논리형 (Boolean) : 참(true)/거짓(false)의 값으로 표현
- null : 값이 아직 없다는 의미
- undefined : 변수는 선언되었으나 값이 할당된 적이 없는 상태를 의미
- 함수 (function) : 객체 프로퍼티에 할당될 수 있는 실행 가능한 코드를 가짐
- 객체 (object) : 이름이 붙은 값들의 모임
3. 리터럴
- 리터럴(Literal) : 프로그램 코드 상에 데이터 값을 표현하는 방식으로, 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기방식을 말한다.
- 즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법이다.
4. 표현식 (expression)
- 표현식은 자바스크립트 엔진에 의해 값으로 평가되는 구문(statement)이다. 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다. 즉, 값으로 평가되는 문(statement)은 모두 표현식이다. 값으로 평가되지 않는 문은 표현식이 아니다.
- 표현식인 문과 표현식이 아닌 문을 구별하는 가장 간단하고 명료한 방법은 변수에 할당해 보는 것이다. 표현식인 문은 값처럼 사용할 수 있지만, 표현식이 아닌 문은 값처럼 사용할 수 없다.
1. 리터럴 표현식 : 10, 'Hello'
2. 식별자 표현식 : sum, person.name, arr[1]
3. 연산자 표현식 : 10+20, sum=10
4. 함수/메서드 호출 표현식 : square(), person.getName()
5. 문
- 문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다. 문의 집합으로 이루어진 것이 프로그램이며, 문을 작성하고 순성에 맞게 나열하는 것이 프로그래밍이다.
- 자바스크립트에서 코드를 문자로 인식 가능하면 모두 문이라고 볼수 있다. 문자로 인식 가능하지 않다면 자바스크립트 파일도 만들 수 없으므로 결과적으로 자바스크립트 파일 내의 모든 것은 문이다.
- 문은 여러 토큰으로 구성된다. 토큰(token)이란 문법적으로 더 이상 나눌수 없는 코드의 기본 요소를 의미한다. 문은 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다. 이 각각의 문은 이름처럼 동작한다.
변수 선언문 => var x, let y, const z
할당문 => x = 5
함수 선언문 => function yoo () {}
조건문 => if(x > 1) { console.log(x);}
반복문 => for (var i =0; i <2; i++) {console.log(i);}
6. 세미콜론과 세미콜론 자동 삽입 기능
- 세미콜론(;)은 문의 종료를 나타낸다. 문을 끝낼 때는 세미콜론을 붙여야 한다. 즉, 자바스크립트 엔진은 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 하나씩 문을 실행한다.
- 단, 0개 이상의 문을 중괄호로 묶은 코드 블록 ({...}) 뒤에는 세미콜론을 붙이지 않는다. 예를 들어 if문, for문, 함수 등의 코드 블록 뒤에는 세미 콜론을 붙이지 않는다. 이러한 코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문이다.
- 문의 끝에 붙이는 세미콜론은 생략 가능하다. 이는 자바스크립트 엔진의 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문이다.
'Javascript' 카테고리의 다른 글
데이터 타입 (Data Type) (0) | 2021.06.21 |
---|---|
호이스팅 (Hoisting) (0) | 2021.06.20 |
변수와 식별자 (0) | 2021.06.14 |