[Java Script] 표현식

2022. 8. 24. 01:17FE/JavaScript

값은 식이 평가되어 생성된 결과를 말한다.

평가란 식을 해석해서 값을 생성하거나 참조하는 것을 말한다.

 

모든 값은 데이터 타입을 가지고 메모리에 2진수 비트의 나열로 저장된다.

 

값을 연산을 통해 생성할 수 있지만 기본적으로 리터럴을 사용하는 것이다.

 

리터럴

리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말한다.

3

3은 숫자 리터럴로 자바스크립트 엔진은 이를 평가해서 숫자 값 3을 생성한다.

 

리터럴을 사용하면 다양한 종류의 데이터 타입 값을 생성할 수 있다.

 

정수 리터럴 

100

부동소수점 리터럴

10.5

2진수 리터럴

0b로 시작

8진수 리터럴

0o로 시작

16진수 리터럴

0x로 시작

문자열 리터럴

' ', " "로 감싸진 데이터

불리언 리터럴

true, false

null 리터럴

null

undefined 리터럴

undefined

객체 리터럴

{key : value}

배열 리터럴

[e1, e2, e3]

함수 리터럴

function() { }

정규 표현식 리터럴

/[A-Z]+/g

 

표현식 (expression)

값으로 평가될 수 있는 문이다.

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

 

// 리터럴 표현식
10
'Hello'

// 식별자 표현식 (이미 선언됨)
sum
person.name
arr[1]

// 연산자 표현식
10 + 20
sum = 10
sum !== 10

// 함수,메서드 호출 표현식 (이미 선언됨)
square()
person.getName()

 

문 (statement)

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

문의 집합으로 이루어진 것이 프로그램이고 문을 작성하고 순서에 맞게 나열하는 것이 프로그래밍이다.

 

문은 여러 개의 토큰으로 구성된다.

 

※ 토큰

문법적인 의미를 가지고 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.

키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표 등 특수 기호는 문법적인 의미를 가지고 더 이상 나눌 수 없는 코드의 기본 요소이다.

 

문은 명령문이라고도 부르고 선언문, 할당문, 조건문, 반복문 등이 있다.

 

// 변수 선언문
var x;

// 할당문
x = 100;

// 함수 선언문
function foo () {}

// 조건문
if (x > 1) {console.log(x);}

// 반복문
for (var i = 0; i<2; i++) {console.log(i);}

 

세미콜론과 세미콜론 자동 삽입 기능

 

세미콜론은 문의 종료를 나타낸다.

자바스크립트 엔진은 세미콜론으로 문이 종료한 위치를 파악하고 순차적으로 명령문을 실행한다.

따라서 문이 끝날 때는 세미콜론을 붙여야한다.

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

이러한 코드 블록은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문이다.

 

문의 끝에 붙이는 세미콜론은 옵션으로 생략이 가능하다.

자바스크립트 엔진이 소스코드를 해석할 때 문의 끝이라고 예측되는 시점에 세미콜론을 자동으로 붙여주는 세미콜론 자동 삽입 기능이 암묵적으로 수행되기 때문이다.

자동 삽입 기능 동작이 개발자의 예측과 일치하지 않는 경우도 있기 때문에 붙이는게 더 좋은 것 같다.

 

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

var x; // 명령문
1 + 2 // 표현식
x = 1 + 2; // 명령문이면서 표현식

할당문은 자체가 표현식이다.

표현식이기 때문에 값처럼 사용할 수 있다.

var x;
console.log(x = 100);

 

※ 완료값

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

이를 완료 값이라 한다.

완료 값은 표현식의 평가 결과가 아니다. 따라서 다른 값과 같이 변수에 할당할 수 없고 참조할 수도 없다.

선언문은 표현식이 아니므로 undefined로 평가

 

728x90

'FE > JavaScript' 카테고리의 다른 글

[JavaScript] 연산자  (0) 2022.09.09
[Java Script] 데이터 타입  (0) 2022.08.24
[Java Script] 변수  (0) 2022.08.23
[Javascript] 자바스크립트 실행환경  (0) 2022.08.23
[Javascript] 자바스크립트란  (0) 2022.08.23