일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scope
- valuable
- foreach()
- javascript
- localStorage
- var
- grid-row-start
- grid-column-end
- CSS
- prompt()
- mongodb
- className
- gird-row-end
- confirm()
- React
- Grid
- css#cascading#display#block#inline
- python #qqplot #qq-plot #code
- variables
- collapsing-margins
- border-style
- box-shadow
- grid-template-areas
- classList
- createElement
- react-hook-form
- relative
- grid-column-start
- package.json
- javascipt
- Today
- Total
data life
📖 modern javascript Deep Dive 5장 본문
표현식과 문
프로그래밍에서 앞으로 자주 사용할 용어의 의미를 주의 깊게 살펴보도록 한다.
값이란?
: 식이 평가되어 생성된 결과로 '평가'는 식을 해석하여 값을 생성하거나 참조하는 것을 의미한다.
var sum = 10 + 20; // 30
>> sum 변수에 10 + 20이 아닌 결과값 30이 할당된 것이라고 본다.
값은 다양한 방법으로 생성가능하다.
리터럴(literal)
: 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.
자바스크립트 엔진은 코드가 실행되는 시점(런타임)에 리터럴을 평가해 값을 생성한다.
리터럴의 종류는 다음과 같다.
리터럴 | 예 |
정수 | 1 |
부동 소수점 | 1.2 |
2진수 | 0b로 시작 |
8진수 | 0o로 시작 |
16진수 | 0x로 시작 |
문자열 | 'Hello', "World" |
불리언(Boolean) | true, false |
null | null |
undefined | undefined |
객체 | {fisrtname:'Lee', lastname:'hyun'} |
배열 | [1,2,3] |
함수 | function() { } |
정규 표현식 | /[A-Z] + /g |
표현식
: 값으로 평가될 수 있는 문(statement)
즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다.
따라서, 리터럴도 표현식이라고 할 수 있다.
var score=100;
>> 100은 리터럴이다.
var score = 50 + 50;
>> 50 + 50 은 평가되어 숫자 100을 생성하므로 표현식이다.
var x = 1 + 1;
x + 1; // 3
🔸 이처럼 표현식은 리터럴, 식별자(변수, 함수 등의 이름), 연산자, 함수 호출 등의 조합으로 이루어지며 다른 표현식의 일부가 되어 새로운 값을 만들어 낼 수도 있다.
문
앞으로 자바스크립트를 설명할 때 문(statement)과 표현식(expression)이라는 용어가 자주 등장할 것이다.
이 둘을 구별하고 해석할 수 있다면 코드를 읽고 결과를 예측하는데 도움이 된다.
문이란?
- 문의 집합 => 프로그램
- 문을 작성하고 순서에 맞게 나열 => 프로그래밍
> 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.
> 명령문이라고도 부르는데 컴퓨터에 내리는 명령인 셈!
> 여러 토큰으로 구성되는데 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
가장 큰 예시로, 키워드, 식별자, 연산자, 리터럴, 세미콜론(;), 마침표(.)등의 특수기호// 변수 선언문 var x; // 할당문 x = 5; // 함수 선언문 function myFunc(){} // 조건문 if (x>1) {console.log(x);} // 반복문 for(var i = 0; i<2; i++) {console.log(i);}
세미콜론(;)
문의 종료를 나타냄
자바스크립트는 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 하나씩 문을 실행해나간다.
표현식인 문 / 표현식이 아닌 문
// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
var x;
// 표현식이면서 완전한 문이다.
x = 1 + 1;
- 표현식이 아닌 문을 실행 ===> undefined
- 표현식인 문 실행 ===> 값 반환