관리 메뉴

흰둥씨의 개발장

[자바스크립트] 딥다이브) 표현식과 문 본문

BoOk/JS deep dive

[자바스크립트] 딥다이브) 표현식과 문

돈워리비해삐 2023. 4. 18. 23:29

개념을 이해한다는 것은 용어를 정확히 이해하고 설명할수 잇어야 한당 

 

1) 값 (=value) ? 식(=표현식= expression)이 평가(=evaluate) 되어 생성된 결과

ㄴ모든 값은 데이터 타입을 가지고, 2진수 bit의 나열로 저장됨

ㄴ메모리 저장된 값은 데이터 타입에 따라 다르게 해석될 수있음 

ㄴ변수에 할당되는 것 

 

**평가 ? 식을 해석해서 값을 생성하거나 참조 하는 것

 

2) 리터럴(=literal) ? 사람이 이해할 수 있는 문자(한글, 아라비아숫자, 알파벳 등) 또는 약속된 기호('', "", ., [], {}, // etc)를 사용해 값을 생성하는 표기법

3 // 숫자 리터럴
'hello' //문자 리터럴
true // boolean 리터럴
null // null literal
undefined // undefined literal
{name : 'Zzanggu', address: 'japen'} // 객체 리터럴
[1,2,3] //배열 리터럴
function(){} //함수 리터럴 
/[a-z]+/g   //정규 표현식 리터럴

 

3) 표현식(=expression) ? 값으로 평가될 수 있는 문(statement) 

ㄴ표현식이 평가되면 새로운 값을 생성 하거나 기존 값을 참조함 

ㄴ리터럴은 값으로 평가되기 때문에, 리터럴도 표현식임

ㄴ식별자 참조는 (값생성 x) 값으로 평가되므로 표현식임 

ㄴ표현식은 리터럴, 식별자(변수, 함수등의 이름), 연산자, 함수호출 등의 조합으로 이루어짐 

 

4) 문(=statement =명령문) ? 프로그램을 구성하는 기본단위이자 최소 실행단위 

ㄴ문의 집합으로 이뤄진 것이 프로그램

ㄴ문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍

ㄴ선언문 할당문 조건문 반복문 등으로 구분

ㄴ문은 여러 토큰으로 구성됨

 

**토큰(=token) ? 문법적인 의미를 가지며, 문법적으로 더이상 나눌수 없는 코드의 기본요소 

ㄴex) 키워드, 식별자, 연산자, 리터럴, 세미콜론(;), 마침표(.) 

 

5) 세미콜론(;) ? 문의 종료를 나타냄 

ㄴ0개이상의 문을 중괄호로 묶은 {...}코드블록 뒤에는 세미콜론 붙이지 않음

ex) if문, for문, 함수...등은 자체종결성을 가지기때문에 세미콜론 안 붙임

ㄴ세미콜론은 옵션으로 생략가능 ; 자바스크립트 엔진이 소스코드 해석시 세미콜론 자동삽입기능(ASI)를 암묵적으로 수행하기 때문에

ㄴ다만, ASI의 동작과 개발자의 예측이 일치하지 않는 경우가 간혹 있음 

ㄴ다수의 전문가들은 세미콜론 사용을 권장

 

6)표현식인 문과 표현식이 아닌 문 

-표현식인 문은 값으로 평가될 수 있는 문 ex) 할당문

-표현식이 아닌 문은 값으로 평가될 수 없는 문 ex) 변수 선언문

ㄴ표현식인 문과 표현식이 아닌 문을 구별하는 방법은 변수에 할당 해 보는 것 

ㄴ표현식이 아닌 문일 경우 값으로 평가 할 수 없어 변수에 할당시 에러발생함 

let Zzanggu = let chulsu; // syntaxError ;  변수 선언문은 표현식이 아닌문

let Zzanggu = 'chulsu' ; //할당문은 표현식인 문

크롬 개발자 도구에서 표현식이 아닌 문을 실행하면 언제나 undefined를 출력함  == 이를 '완료값'이라 함 

ㄴ완료값은 표현식의 평가 결과가 아님

ㄴ다른 값과 같이 변수에 할당할수 없고, 참조할수도 없다. 

 

크롬 개발자 도구에서 표현식인 문을 실햏아면 언제나 평가된 값을 반환함