[TIL] #3 (2022.01.22)

어느 개발자·2022년 1월 22일
0

TIL

목록 보기
3/15
post-thumbnail

📝 TIL
코드스피츠 ES6+ 기초편 1회차 Language Element

📕 참고
강의 1회 수강 후에 기록을 남긴 것이므로 내용에 오류가 있을 수 있습니다. TIL의 코드스피츠 내용을 정리 및 취합하여 새 게시물을 작성할 예정입니다.

Language Element

statement (문)

  • 종류 : 공문, 식문, 제어문, 선언문
  • 컴파일러 또는 실행기에게 주는 힌트이다.
  • 실행기는 힌트를 받아 어떻게 처리할지 알게된다.
  • statement 대부분은 flow 제어를 하기 때문에 control statement 라고도 한다.
  • 하나의 문만 오는 것을 단문이라고 한다. 단문이 오는 위치에 중괄호 {} 를 사용하여 여러 문이 오도록 할 수 있는데, 이를 중문이라고 한다.

공문

공문은 비어있는 문이다.

js 엔진은 공문을 인정한다.
따라서 세미콜론만 입력해도 오류가 나지 않는다.

식문

제어문

흐름을 제어하는 문이다.

선언문

선언하는 문이다.

💡 선언
선언이란 메모리 상에 변수를 할당하는 일이다. 할당하면 vtable 도 같이 작성된다. 메모리에 load 되면 vtable 을 참조하여 실제 메모리와 mapping 한다.

Language Element로 소스 분석하기

Language Element 개념을 생각하면서 소스를 분석해보자.

예시 1

if(true);;

이 구문은 오류가 날 것 같은가?
실행해보면 오류가 나지 않는다.

if(true); 가 if문이고, ; 은 공문이기 때문이다.
단, if문에 영향을 받는 scope에서 마지막 ; 은 제외된다.

if문은 if[공백](식)[공백]문 으로 해석되기 때문이다.

강의를 듣다가 이 부분에서 감탄했다. 보기엔 어색한 소스인데 구문상 오류가 없는 소스였다. Langauge Element를 생각하면서 소스 읽는 법을 익히자!


예시 2

if(true){;;}

if(true);; 와 다르게 마지막 에 중문을 사용하였다.
중괄호 {} 를 사용하면 위치에 여러 문을 사용할 수 있다.


예시 3

var a, b;
if (true) a = 3; b = 5

이 구문은 오류가 발생할까? No, 발생하지 않는다.
단, if문이 있고 뒤에 문이 추가로 오는 구조이다.

단, if문의 범위는 a = 3; 까지이다.
b = 5; 는 if문의 범위에 포함되지 않는다.

다음과 같이 중문으로 작성하여 b = 5; 도 if문의 범위에 포함할 수 있다.

var a, b;
if (true) { a = 3; b = 5; }

expression (식)

식은 값을 표현하는 여러가지 방법이다. 즉, 식은 값 하나로 수렴한다.

값식

값식 은 식 자체가 값이 된다.
true3 등이 값식이다.

하나의 값식을 식문으로 인정하기 때문에 죽지 않는다. 인정하지 언어에서는 오류 발생한다.

연산식

3 + 5 연산식은 8 이라느 값으로 수렴한다.

호출식

js에서는 호출하면 무조건 값이 나온다.
심지어 ; 만 입력하여도undefined 라는 값을 뱉어낸다.

identifier (식별자)

대부분 변수이다.

우리의 코드는 or or 식별자 로 이루어진다.

0개의 댓글