Day_2 Expression

Oigu·2023년 12월 11일

숨참고 Deep Dive

목록 보기
2/5
post-thumbnail

참고한 교재

모던 자바스크립트 Deep Dive


05장 표현식과 문

value

값 value

  • : 식(표현식)이 평가되어 생성된 결과, 변수에 할당되는 것
  • 평가: 식을 해석해서 값을 생성하거나 참조
  • 변수: 하나의 값을 저장하기 위해 확보한 메모리 공간을 식별하기 위해 붙인 이름

특징

모든 값은 데이터 타입을 가짐
메모리에 2진수, 즉 비트의 나열로 저장
메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있음


리터럴 literal

  • 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)
  • 값을 표기하기 위해 미리 약속한 표기법
  • '', "", [] {} 등

자바스크립트 리터럴 종류

종류 예시 설명
정수 리터럴 42, -10, 0x1A (16진수) 음수와 16진수 표기법도 가능
부동 소수점 리터럴 3.14, -0.01, 2.0e3 (지수 표기) 소수점이나 지수 표기법을 사용할 수 있음
문자열 리터럴 "Hello, World!", 'A', "123" 문자의 나열, 큰 따옴표나 작은 따옴표로 감싸짐
불리언 리터럴 true, false 참(True) 또는 거짓(False)
null 리터럴 null 값이 없음
undefined 리터럴 undefined 값이 정의되지 않았음
객체 리터럴 { key: value, key2: value2 } 키와 값의 쌍으로 이루어진 객체를 초기화
함수 리터럴 function(x) { return x * 2; } 함수를 정의, 변수에 할당하거나 다른 함수 내에서 사용될 수 있음
정규 표현식 리터럴 /pattern/g, /[a-z]/i 문자열에서 패턴을 검색하는 데 사용되는 정규 표현식을 정의

2진수, 8진수, 16진수 리터럴

종류 예시 비고
2진수 리터럴 0b1010 0b 표기 ES6부터 지원
8진수 리터럴 0o16 0o 표기 ES6부터 지원
16진수 리터럴 0x1F 0x 표기

2진수, 8진수는 ECMAScript 2015 (ES6)부터 도입
최신 브라우저 및 Node.js 버전에서는 문제없이 사용 가능

// 2진수 (Binary)
let binaryNumber = 0b1010; // 2진수 1010 (10진수로는 10)
console.log(binaryNumber); // 출력: 10

// 8진수 (Octal)
let octalNumber = 0o16; // 8진수 16 (10진수로는 14)
console.log(octalNumber); // 출력: 14

// 16진수 (Hexadecimal)
let hexNumber = 0xA; // 16진수 A (10진수로는 10)
console.log(hexNumber); // 출력: 10

표현식 expression

  • 값으로 평가될 수 있는 문(statement)
  • 표현식이 평가되면 새로운 값을 생성하거나 기존값 참조
  • literal은 value로 평가되기 때문에 표현식임
  • 리터럴, 식별자, 연산자, 함수 호출 등의 조합으로 이루어짐

Example

var score = 50 + 50;
50 + 50은 리터럴과 연산자로 이뤄져 있음
50 + 50도 평가되어 숫자 값 100을 생성하므로 표현식임

score;
변수 식별자를 참조하면 변수 값으로 평가되므로 표현식임

//리터럴 표현식
8
'hi'

// 식별자 표현식
sum
yh.name
arr[0]

// 연산자 표현식
sum = 8
50 + 50

//함수 호출 표현식
yh.getName()

문 statement

  • 문(statement): 프로그램을 구성하는 기본 단위이자 최소 실행 단위, 명령문
  • 토큰(token): 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소

// 선언문
var x;

//할당문
x = 5;

// 선언문
function oi () {}

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

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

세미콜론(;)

  • 세미콜론으로 문의 종료 위치 파악
  • 문을 끝낼 때 세미콜론(;)을 붙여야 함
  • 코드블록 {} 뒤에는 세미콜론을 붙이지 않음
    • if문, for문, 함수 등의 코드 블록은 자체 종결성을 가지기 때문
  • 세미콜론은 옵션임(생략 가능)
  • 세미콜론 자동 삽입 기능(ASI)이 암묵적으로 수행 됨
  • 하지만 ASI를 제대로 예측하지 못하고 코드를 작성하게 되면 원하는 결과가 나오지 않을 수 있으니 붙이는 게 좋을..듯?

표현식이 아닌 문

  • 값으로 평가될 수 없는 문
  • 변수에 할당해 보면 간단하게 구별할 수 있음
// 표현식 x
var x;  // 변수 선언문 (표현식 x)
var oi = var x;  // SyntaxError: Unexpected token var

// 표현식 o
x = 888;  // 할당문 (표현식 o) 
var oi = x = 888;  // 888을 할당한 x할당문을 값(888)처럼 변수에 할당
console.log(oi);  // 888

0개의 댓글