티스토리 뷰
5. 표현식과 문
값
“표현식”이 “평가”되어 생성된 결과
10 + 20 // 30
10+20 이 평가되어 숫자 값 30을 생성
모든 값은 데이터 타입을 갖고, 데이터 타입에 따라 다르게 해석됨!
⇒ 0100 0001 ⇒ number ? 65 , string ? ‘A’
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 or 메모리 공간을 식별하기 위해 붙인 이름
⇒ 변수에 할당되는 것은 “값”
var score = 10 + 20;
score라는 변수에 할당되는 것은 표현식이 아닌 30이라는 값
리터럴
사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
3
⇒ 숫자 리터럴 3 ㅋㅋ ( 사람이 이해할 수 있는 아라비아 숫자를 사용한거)
⇒ 자바스크립트 엔진은 이를 평가해서 숫자 값 3을 생성
자바스크립트 엔진은 런타임 때 리터럴을 평가해서 값을 생성
즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법
표현식
표현식은 값으로 평가될 수 있는 문
⇒ 표현식이 평가되면 새로운 값을 생성하거나 기존의 값을 참조
var score = 100;
리터럴 100
자바스크립트 엔진에 의해 평가 ⇒ 값을 생성
⇒ 리터럴은 그 자체로 표현식
var score = 10 + 20;
리터럴과 연산자 ⇒ 10+20이 평가되어 값 30 생성 ⇒ 표현식
score;
변수 식별자 참조 → 변수 값으로 평가됨
⇒ 식별자 참조는 값을 생성하진 않지만, 값으로 평가되므로 표현식!!!
이처럼 다양한 표현식이 있지만 모두 값으로 평가된다는 공통점
값으로 평가될 수 있는 문은 모두 표현식이다!
표현식과 표현식이 평가된 값은 동등한 관계, 동치
1 + 2 = 3
1+2와 3이 동치 관계인 것처럼 자바스크립트 표현식도 동일ㄹ
⇒ 따라서 표현식은 값처럼 사용할 수 있따
⇒ 이 말은 즉슨 ㅋ 문법적으로 값이 위치할 수 있는 자리에 표현식이 위치할 수도 있다는 말씀
문
“문”과 “표현식”을 잘 구분할 수 있어야함
“문”은 프로그램을 구성하는 기본 단위이자 최소 실행 단위
⇒ 이 문을 작성해서 순서에 맞게 나열하는 것이 프로그래밍
var sum = 1 + 2 ;
//token = var , sum , = , 1, + , 2 , ;
문은 여러 토큰으로 구성된당
(토큰 ? 문법적으로 더이상 나눌 수 없는 코드의 기본 요소)
이 문을 명령문이라고도 부른다 (ex. 선언문 할당문 반복문 조건문 등등 ㅋ)
⇒ 문이 실행되면 무슨 일이 일어나게 된당
세미 콜론
자바스크립트 엔진은 세미콜론으로 문의 종료 위치 파악 ⇒ 하나씩 순차 실행
따라서 문이 끝날 때는 세미콜론을 붙여아 한당
하지만 중괄호로 묶은 코드 블록 뒤에는 세미 콜론을 붙이지 않는당
- why? 코드 블록은 자체 종결성을 갖고 있어서
근데 사실 이 세미콜론은 옵션이라 생략 가능함 ㅋ
자바스크립트 엔진이 세미콜론으로 종료 위치를 파악해야되는데 왜 옵션?
⇒ 세미콜론 자동 삽입 기능(ASI)을 엔진이 암묵적으로 수행 ㅋ
하지만 간혹가다가 ASI 동작과 개발자의 예측이 일치하지 않는 경우가 있덩
function foo (){
return {}
}
//예측 => return {};
//ASI => return; {};
표현식인 문과 표현식이 아닌 문
표현식은 문의 일부일 수도 있고, 문 그 자체일 수도 있음
var x;
//선언문은 값으로 평가될 수 없으니 표현식이 아니당
x = 1 + 2;
//표현식이면서 완전한 문
문에는 표현식인 문과 그렇지 않은 문이 있슴
표현식은 값으로 평가될 수 있는 문! 아닌 문은 반대
이 둘을 구분할 수 있는 가장 명료한 방법은 변수에 할당해보는 것
⇒ 표현식인 문은 값이니까 변수에 할당할 수 있당
var foo = var x;
//선언문은 표현식이 아니라 이렇게 사용 불가
var x;
x = 100;
//할당문은 문이면서 표현식
var foo = x = 100;
//이렇게 사용할 수 있슴
💡 완료 값
콘솔에서 표현식이 아닌 문을 실행하면 undefined가 출력됨
⇒ 실행을 완료했다는 의미로 ㅋ
표현식인 문은 평가된 값을 반환~
'JavaScript > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
[4장] 변수 - 모던 자바스크립트 Deep Dive (0) | 2023.12.04 |
---|---|
[1~3장] 프로그래밍 - 모던 자바스크립트 Deep Dive (0) | 2023.11.29 |
- Total
- Today
- Yesterday
- github
- CSS
- 백엔드
- JS
- 멋쟁이사자처럼
- 깃허브
- HTML
- react
- 코딩테스트
- 골드5
- 리액트
- 이것이코딩테스트다
- Python
- 크루스칼
- IT
- 컴공
- 개발자
- 파이썬
- JavaScript
- 홍익대
- 홍대
- 인프런
- 코테
- 코딩
- BOJ
- 알고리즘
- 이것이 코딩테스트다
- 신장트리
- 멋사
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |