[JavaScript] Value & Expression

jaylight·2021년 1월 24일
0

식(표현식: expression)이 평가(evaluate)되어 생성된 결과

모든 값은 데이터 타입을 가지며, 메모리에 2진수(비트의 나열)로 저장됨

변수: 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 혹은 그 메모리 공간을 식별하기 위해 붙인 이름

⇒ 변수에 할당되는 것은

var sum = 10 + 20;

위 예제에서 sum에 할당되는 것은 10 + 20 이 아니라, 10 + 20이 평가된 결과인 30이라는 값

평가

식을 해석해서 값을 생성하거나 참조하는 것

리터럴 표현식

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

숫자 리터럴 3 ⇒ JavaScript는 이를 평가해 숫자 값 3을 생성

JavaScript 엔진은 코드가 실행되는 런타임에 리터럴을 평가해 값을 생성

  • 정수 리터럴 100
  • 부동소수점 리터럴 10.5
  • 2진수 리터럴 0b01000001 (0b로 시작)
  • 8진수 리터럴 0o101 (0o로 시작 // ES6에서 도입)
  • 16진수 리터럴 0x41 (0x로 시작 // ES6에서 도입)
  • 문자열 리터럴 "Hello", 'World'
  • 불리언 리터럴 true, false
  • null 리터럴 null
  • undefined 리터럴 undefined
  • 객체 리터럴 { name: 'Lee', address: 'Seoul' }
  • 배열 리터럴 [1, 3, 5,]
  • 함수 리터럴 function () {}
  • 정규 표현식 리터럴 /[A-Z]+/g

표현식

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

var score = 100;

100은 리터럴이다. 리터럴은 JavaScript 엔진에 의해 평가되어 값을 생성하므로 그 자체로 표현식이다.

리터럴은 그 자체로 표현식이다.

var score = 50 + 50;

50 + 50은 리터럴 & 연산자로 구성되어있다. 그리고 평가되어 숫자 값 100을 생성하므로 표현식이다.

score;

score는 식별자로, 참조 시 변수 값으로 평가된다. 즉 식별자 참조 또한 값으로 평가되믈 표현식이다.

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

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

// 리터럴 표현식
50
'Hi'

// 식별자 표현식
sum
person.name
arr[1]

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

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

표현식은 값으로 평가 ⇒ 표현식과 표현식이 평가된 값은 동등한 관계 즉, 동치이다.
(1 + 10 = 11 ⇒ 1 + 10과 11은 동치이다.)

즉, 표현식은 값처럼 사용될 수 있고, 문법적으로 값이 위치할 수 있는 자리에 표현식도 위치할 수 있다.

산술 연산자 + 의 좌항과 우항에는 숫자 이 위치해야한다.
이때 숫자 값으로 평가될 수 있는 표현식이라면 숫자 값 대신 사용할 수 있다.

var x = 1 + 2;

// 식별자 표현식 x는 3으로 평가된다.
x + 3; // → 6

0개의 댓글