[TIL] #3 (2022.01.22)
📝 TIL
코드스피츠 ES6+ 기초편 1회차 Language Element
📕 참고
강의 1회 수강 후에 기록을 남긴 것이므로 내용에 오류가 있을 수 있습니다. TIL의 코드스피츠 내용을 정리 및 취합하여 새 게시물을 작성할 예정입니다.
Language Element
statement (문)
- 종류 : 공문, 식문, 제어문, 선언문
- 컴파일러 또는 실행기에게 주는 힌트이다.
- 실행기는 힌트를 받아 어떻게 처리할지 알게된다.
statement
대부분은 flow 제어를 하기 때문에 control 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 (식)
식은 값을 표현하는 여러가지 방법이다. 즉, 식은 값 하나로 수렴한다.
값식
값식
은 식 자체가 값이 된다.
true
나 3
등이 값식
이다.
하나의 값식을 식문으로 인정하기 때문에 죽지 않는다. 인정하지 언어에서는 오류 발생한다.
연산식
3 + 5
연산식은 8
이라느 값으로 수렴한다.
호출식
js에서는 호출하면 무조건 값이 나온다.
심지어 ;
만 입력하여도undefined
라는 값을 뱉어낸다.
identifier (식별자)
대부분 변수이다.
우리의 코드는
문
or식
or식별자
로 이루어진다.
Author And Source
이 문제에 관하여([TIL] #3 (2022.01.22)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@okyungjin/TIL-3-2022.01.22저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)