[JavaScript] - 표현식과 문

희철·2023년 12월 14일
1
post-thumbnail
post-custom-banner

값(value)

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

// 변수 sum에 10 + 20이 평가되어 값 30이 할당된다.
let sum = 10 + 20; 

리터럴(literal)

리터럴(literal)은 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등) 또는 약속된 기호('', . , [ ], { }, / / 등 )를 사용해 값을 생성하는 표기법(notation)을 말한다.
자바스크립트 엔진은 코드가 실행되는 시점인 런타임(runtime)에 리터럴을 평가해 값을생성한다. 즉, 리터럴은 값을 생성하기 위해 미리 약속한 표기법이라고 할 수 있다.

	100 // 정수리터럴
	10.5 // 부동소수 리터럴
	0b01000001 // 2진수 리터럴, 0b로 시작
	0o101 // 8진수 리터럴, ES6에서 도입. 0o로 시작
	0x41 // 16진수 리터럴, ES6에서 도입. 0x로 시작
	'hello', "world" // 문자열 리터럴
	true, false // 불리언 리터럴
	null // null리터럴
	undefined // undefined리터럴
	{ name: 'yang', mbti: 'INFP' } // 객체 리터럴
	[ a, b, c ] // 배열 리터럴
	function() {} // 함수 리터럴
	/[A-Z]+/g // 정규 표현식 리터럴

표현식(expression)

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

	let score = 20; // 20은 리터럴이자 값이다
	let score2 = 10+30; // 리터럴과 연산자로 이루어짐. 값 40을 생성
	score; // 값 20
	score1; // 값 40

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

  • 값으로 평가될 수 있는 문은 모두 표현식이다.
  • 표현식은 값으로 평가되어 표현식은 값처럼 사용할 수 있다.
    		let sum = function (number) {
       			return number + 5;
       		}
    		// 함수 sum 은 10으로 평가된다.
    		sum(5)+5; // 15

문(statement)

문(statement)은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다.
문은 여러 토큰(token)으로 구성된다.

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

	let sum = 5 + 5;
	// 키워드 let, 식별자 sum, 연산자 =, 리터럴 5, ;
	// 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이므로 모두 토큰이다.
  • 문은 명령문이라고도 부른다, 문은 컴퓨터에 내리는 명령이다.

  • 문은 선언문, 할당문, 조건문, 반복문 등으로 구분할 수 있다.

    	//변수 선언문
    		let a;
    
    	//할당문
    		a = 10;
    
    	//함수 선언문
    		function abc () {}
     	
     	//조건문
    		if ( a > 1 ) { console.log(a); }
    
    	//반목문
    		for( let i = 0; i < 2; i++ ) { console.log(i); }

세미콜론( ; )과 세미콜론 자동 삽입 기능

  • 세미콜론( ; )은 문의 종료를 나타낸다.
  • 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 하나씩 문을 실행한다.
  • 단 코드블록( { ... } ) 뒤에는 세미콜론을 붙이지 않는다.
    • if문, for문, 함수 등의 코드 블록 뒤에는 세미콜론을 붙이지 않는다. 이러한 코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문이다.
  • 문의 끝에 세미콜론은 옵션이다.(생략가능)
    • 세미콜론 자동 삽입 기능 ASI( Automatic Semicolon Insertion )이 암묵적으로 수행되기 때문이다.
  • ASI 동작과 개발자의 예측이 일치하지 않는 경우가 있어 세미콜론 사용을 권장하는 분위기이다.

문(statement)에 대해서 공부를 하면서 통용되는 것이 많아 이것이 저것 같고 저것이 이것 같은 경우가 있어 조금 헷갈리는 부분이 있다.


정리하자면...

  • 문(statement)는 프로그램을 구성하는 (기본/최소 실행) 단위, 명령문이라고도 하며 token(문법적으로 더이상 나눌 수 없는 코드의 기본 요소)으로 구성되어있다.
    • 선언문 할당문 조건문 반복문 등으로 구분 가능하다.
  • 표현식(expression)은 값으로 평가되는 모든 문을 표현식이라고 한다. 표현식은 값처럼 사용할 수도 있다.
  • 세미콜론은 문의 종료를 나태내며 코드블록은 자체 종결성을 가져 뒤에 세미콜론을 붙이지 않는다.
  • 자바스크립트는 문의 끝에 세미콜론을 생략 가능하지만 권장하지 않는다.

참고: 모던 자바스크림트 Deep Dive

post-custom-banner

0개의 댓글