본문 바로가기

공부/TIL

완료값에 대하여

완료 값은, '선언문'과 '표현식', '값'과 '평가'에 대한 이해가 필요한 문제입니다.



완료 값(Completion value)이란,

크롬 개발자 도구에서 표현식이 아닌 문은 언제나 undefined를 출력한다.

이를 완료 값(Completion value)이라 한다. 완료 값은 다른 값과 같이 변수에 할당할 수 없다.

 

 

크롬브라우저 '완료값'

파이어폭스, 엣 브라우저에서도 동일한 완료 값이 나오는 것을 확인할 수 있습니다.

그런데 값, 평가, 표현식, 선언문에 대한 이해가 없으니,

 

 완료 값의 정의인 '표현식이 아닌 문'에 대하여 이해를 못 하신다고 판단됩니다.

그래서 표현식에 대한 정의를 이해하셔야 됩니다.

 

표현식(expression)은 값으로 평가될 수 있는 문(statement)이다. 즉, 표현식이 평가되면 값을 생성하거나 값을 참조한다.

 

비슷하게 값, 평가, 문이라는 단어가 나왔습니다. 값에 대한 이해가 필요합니다.

 

값(value)은 식(표현식, expression)이 평가(evaluate)되어 생성된 결과를 말한다. 

 

뭔가 제자리를 도는 기분과 동시에 평가라는 단어가 눈에 들어오면 성공입니다.

평가라는 단어 자체는 딱 부러지게 설명이 있는 부분이 없어서 여기서부터 헷갈리실 수 있다고 생각합니다.

사람이 이해할 수 있는 아라비아 숫자를 사용하여 숫자 리터럴 3을 코드에 기술하면

 

자바스크립트 엔진은 이를 평가하여 숫자 값 3을 생성합니다.



3은 인간이 알아볼 수 있는 '숫자 리터럴'입니다. 사람이 코드로 작성하면,

 

이것을 자바스크립트 엔진이 11(2)로 메모리에 자신이 알아볼 수 있는 값으로 만드는데 이것을 평가라고 생각합니다.


그렇다면 문은?

 

문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위이다.

 

종합해보면, 완료 값이란 표현식이 '아닌' 문에는 개발자 도구에서 undefined가 나오고,

 

표현식이란 평가되어 값이 될 문입니다. 그렇다면 위의 예제 var a = 10; 은 표현식이 아닌 걸까요?

나누어보면 var a (변수 선언문) 및 a = 10의 (변수 할당 문)된 문이라고 입니다.

그리하여 표현식인지 아닌지 가장 알아보기 쉬운 방법으로 변수에 대입해보면,

var x = var a = 10;이라는 문장은 에러가 발생하고 표현식이 아닌 문이 됩니다.

반대로 표현 식인 문을 브라우저에 입력해보면,

 

표현식인 문 예제1
표현식인문 예제2

위는 숫자 리터럴 연산자 숫자 리터럴로 평가되어 값이 될 표현식이고, 아래는 변수 할당 문(표현 식인 문)입니다.

보면 가장 위의 사진과 비교하여 완료 값 undefined가 나타나지 않는 것을 알 수 있습니다.

 

반응형

'공부 > TIL' 카테고리의 다른 글

사람이 다른 동물과 구별되는 점은?  (0) 2020.04.28
배정밀도 64비트 부동소수점 형식의 2진수  (0) 2020.04.22
커밋 메시지  (0) 2020.04.20
package-lock.json  (0) 2020.04.14
0323  (0) 2020.03.23