5.1 값
값(value)
- 식(expression)이 평가(evaluate)되어 생성된 결과
- 평가란 식을 해석해서 값을 생성하거나 참조하는 것
//10+20은 평가되어 숫자 값 30을 생성
10+20; //30
- 모든 값은 데이터 타입을 가지며, 메모리에 2진수 즉 비트의 나열로 저장
- 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석
//변수에는 10+20이 평가되어 생성된 숫자 값 30이 할당
var sum = 10 + 20;
5.2 리터럴
리터럴(literal)
- 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)
- 자바 스크립트 엔진은 코드가 실행되는 시점인 런타임(runtime)에 리터럴을 평가해 값을 생성
리터럴 | 예시 |
정수 리터럴 | 100 |
부동 소수점 리터럴 | 10.5 |
2진수 리터럴 | 0b01000001 |
8진수 리터럴 | 0o101 |
16진수 리터럴 | 0x41 |
문자열 리터럴 | 'Hello' "World" |
불리언 리터럴 | true false |
null 리터럴 | null |
undefined 리터럴 | undefined |
객체 리터럴 | {name : 'Lee', address : 'Seoul'} |
배열 리터럴 | [1,2,3] |
함수 리터럴 | function () {} |
정규 표현식 리터럴 | /[A-Z] +/g |
5.3 표현식
표현식(expression)
- 값으로 평가될 수 있는 문(statement)
- 표현식이 평가되면 새로운 값을 생성하거나 값을 참조
- 값으로 평가될 수 있는 문은 모두 표현식
//리터럴 표현식
10
'Hello'
//식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.name
arr[1]
//연산자 표현식
10+20
sum = 10
sum !== 10
//함수/메서드 호출 표현식 (선언이 이미 존재한다고 가정)
square()
person.getName()
- 표현식과 표현식이 평가된 값은 동치(equivalent)관계
- 값이 위치할 수 있는 자리에는 표현식도 위치 가능
var x = 1+2;
//식별자 표현식 x는 3으로 평가
x+3; // 6
5.4 문
문(statement)
- 프로그램을 구성하는 기본 단위이자 최소 실행 단위
- 프로그램 : 문의 집합
- 문은 여러 토큰으로 구성
- 컴퓨터에 내리는 명령
토큰(token)
- 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
//변수 선언문
var x;
//할당문
x=5;
//함수 선언문
function foo() {}
//조건문
if (x>1) {console.log(x);}
//반복문
for(var i = 0; i < 2; i++) {console.log(i);}
5.5 표현식인 문과 표현식이 아닌 문
- 표현식은 문의 일부일 수도 있고 그 자체로 문이 될 수도 있다
- 표현식인 문
: 값으로 평가될 수 있는 문
- 표현식이 아닌 문
: 값으로 평가될 수 없는 문
- 표현식인 문과 표현식이 아닌 문을 구별하는 가장 간단한 방법은 변수에 할당해 보는 것
//표현식이 아닌 문은 값처럼 사용 불가
var foo = var x; //SyntaxError
//표현식인 문은 값처럼 사용 가능
var foo = x = 100;
console.log(foo); //100
'JavaScript' 카테고리의 다른 글
[Deep dive] 7장 연산자 (0) | 2023.08.07 |
---|---|
[Deep dive] 6장 데이터 타입 (0) | 2023.08.07 |
[Deep dive] 4장 변수 (0) | 2023.08.07 |
17장 마무리 문제 2 (0) | 2023.04.14 |
17장 마무리 문제 1 (0) | 2023.04.14 |