이웅모 저자의 모던 javascript deep dive를 공부한 내용을 정리한 글입니다.
2. 표현식
2.1 값이란?
// 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다
var sum = 10 + 20;
2.2 리터럴
- 리터럴은 사람이 이해할 수 있는 문자 또는 미리 약속된 기호로 표기한 코드
// 정수 리터럴
100
// 부동소수점 리터럴
10.5
// 2진수 리터럴
0b011001
// 8진수 리터럴
0o151
// 16진수 리터럴
0x41
// 문자열 리터럴
'hello'
"world"
// 불리언 리터럴
true
false
// null 리터럴
null
// undefined 리터럴
undefined
// 객체 리터럴
{name : 'Lee', age : 20}
// 배열 리터럴
[10, 20, 30]
// 함수 리터럴
function (){}
// 정규표현식 리터럴
/[A-Z]+/g
2.3 표현식과 문
- 표현식은 값으로 평가될 수 있는 문(statement)이다.
- 값으로 평가 될 수 있는 모든 문은 표현식이다.
// 100은 리터럴 , 리터럴은 그 자체로 표현식이다.
// 100 : 리터럴 표현식
var score = 100;
// 50 + 50은 리터럴과 연산자로 이뤄져 있다. 50 + 50이 100을 생성하므로 표현식이다.
// 50 + 50 : 연산자가 포함된 표현식
var score = 50 + 50;
// score 변수 참조
// 식별자 표현식
score; // 100
// 변수 식별자를 참조하면 변수 값으로 평가된다. 값으로 평가되므로 표현식
// 함수/메서드 호출 표현식
add(score);
- 문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
- 문은 컴퓨터에 내리는 명령
- 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소
// var : 변수 선언 키워드 토큰
// sum : 식별자 토큰
// = : 연산자 토큰
// 1 : 리터럴 토큰
// + : 연산자 토큰
// 2 : 리터럴 토큰
// ; : 특수기호 토큰
var sum = 1 + 2;
- 문은 선언문, 할당문, 조건문, 반복문 등으로 구분
2.4 세미콜론과 세미콜론 자동 삽입 기능
function foo(){
return
{}
// 자동 삽입 결과 => return; {};
// 개발자 예측 => return {};
}
- 이처럼 개발자의 예측과 다른 동작을 할 수 있기 때문에 개발자가 의도한대로 세미콜론을 넣어주는 것을 권장
2.5 표현식인 문과 표현식이 아닌문
- 모든 표현식은 문이지만 모든 문이 표현식은 아니다.
- 포함관계로 따지면 표현식 < 문
- 그렇다면 표현식이 아닌 문은 어떻게 구분할 수 있을까?
- 값으로 평가될 수 있는 문은 표현식이고,
- 값으로 평가될 수 없는 문은 표현식이 아니다.
- 가장 간단하고 명료한 방법은 변수에 할당해 보는것
// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
var y = var x; //SyntaxError: Unexpected token var
// x = 10 은 10이라는 값으로 평가 되기 때문에 표현식이다.
var z = x = 10;
// 조건문, 반복문은 값으로 평가될 수 없으므로 표현식이 아니다.
var foo = if(true){x = 100}
댓글남기기