상세 컨텐츠

본문 제목

[모던 자바스크립트] 5장 표현식과 문

모던 자바스크립트

by penloo 2024. 3. 28. 22:58

본문

 

개념을 이해하는 건 용어를 정확하게 이해하고 누군가에게 설명할 수 있다라는 뜻.

1. 값

 

은 식이 평가되어 생성된 결과.

평가는 식을 해석해서 값을 생성하거나 참조(가져오기) 하는것을 의미 

 

// 10 + 20은 평가되어 숫자 값 30을 생성한다.
10 + 20; //30

 

모든값엔 데이터 타입을 가진다 -> 데이터 타입에 따라 해석이 다양하게 나옴

ex) 0100 0001 이 메모리에 저장되서 int면 65 char 이면 A이다 

 

  • 변수는 값을 저장하기 위해 메모리공간을 확보하거나 식별(식별자)하기 위해 붙힌 이름 
  • 변수에 할당되는 것은 값이다 

// 변수에는 10 + 20은 평가되어 숫자 값 30을 할당된다.
var sum = 10 + 20; //30

2.  리터널

 

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

 

  • 리터럴은 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등) 또는 미리 약속된 기호 (’’, “ “, [], {} 등)로 표기한 코드다.
    ex) 3  // 정수 리터널 3

 

리터널은 값을 생성하기 위해 미리 약속한 표기법이다.

 

3. 표현식 

 

  • 표현식은 값으로 평가될 수 있는 문이다. 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조(변수에 저장된 값을 읽어들이는것)한다.
    • 리터럴은 값으로 평가된다. 따라서 리터럴도 그 자체로 표현식이다.

var score = 100; //->100은 뭐다? 리터널이다

var score = 50+50; // 100

score; //100

 

변수 식별자를 참조하면 변수 값으로 평가된다 -> 식별자 참조는 값을 생성하지는 않지만 값으로 평가

 

표현식은 리터널, 식별자,연산자, 함수 호출등의 조합으로 이뤄질수 있다.

 

 

값으로 평가될 수 있는 문은 모두 표현식이다.

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

// 식별자 표현식(선언이 이미 존재한다고 가정)
sum
person.name
arr[1]

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

// 함수/메서드 호출 표현식(선언이 이미 존재한다고 가정)
square()
person.getName()

 

 

var x = 1 + 2;

x + 23; // 26살..

 

 

4.문

 

  • 문은 프로그램을 구성하는 기본 단위이자 최소 실행 단위다. (=명령문 ? 문은 컴퓨터에게 내리는 명령이기 때문에 문이 실행되면 명령이 실행됨)
    • 문의 집합으로 이루어진 것이 프로그램이며, 문을 작섷ㅇ하고 순서에 맞게 나열하는 것이 프로그래밍이다.
    • 문은 여러 토큰으로 구성됨
    • 선언문, 할당문, 조건문, 반복문 등
  • 토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소를 의미한다.
    ex) ; , 리터널 , 연산자 , 식별자 

 

 

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

  • 세미콜론은 문의 종료를 나타내며 생략가능하다. 자바스크립트 엔진이 소스코드를 해석할 때 문의 끝이라고 예측되는 지점에 세미콜론을 자동으로 붙여주는 세미콜론 자동 삽입 기능(ASI)이 암묵적으로 수행되기 때문이다.
  • 단, { .... } 코드블럭 뒤에는 세미콜론을 붙히지 않는다. if문 ,for문 등 자체종결성을 가지고 있기때문이다.

 

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

// 변수 선언문은 값으로 평가될 수 없으므로 표현식이 아니다.
var x;
// 1, 2, 1+2, x=1+2는 모두 표현식이다.
// x=1+2는 표현식이면서 완전한 문이기도 하다.
x = 1 + 2;
  • 표현식인 문은 값으로 평가될 수 있는 문이며, 표현식이 아닌 문은 값으로 평가될 수 없는 문을 말한다.
    변수선언문은 X , 할당하는 문은 표현식이 맞다 값이 있고 없고 차이..!

  • 표현식인 문과 표현식이 아닌 문을 구별하는 가장 간단하고 명료한 방법은 변수에 할당해 보는 것이다.
var foo = var x; // 표현식이 아닌 문은 값처럼 사용이 안된다 

var x; // 값이 없쥬? 표현식이 아님

x = 100; // 할당문이기에 표현식이 맞음

 

반대로 , 표현식인 문인 할당문은  값처럼 할당할 수 있다. 또한 그 문도 할당한 값으로 평가받는다 

 

var foo = x = 1000;
console.log(foo); //1000

 

이렇게 표현식안 문은 값처럼 사용이 가능 . foo변수는 1000이 된다.

관련글 더보기