/////
Search

4장 ~ 7장

개념을 이해한다. === 용어를 정확히 이해하고 설명할 수 있다.

자바스크립트 = ECMAScript(ECMA) + 클라이언트 사이드 WEB API(W3C)

변수

하나의 값을 저장하기 위해 확보한 메모리 공간, 메모리 공간을 식별하기 위해 붙인 이름, 값의 위치를 가리키는 상징적인 이름
1.
변수 선언 = 선언 단계 + 초기화(undefined) 단계
2.
값의 할당
변수는 ‘선언한다’ 함수는 ‘정의한다’

식별자

값이 저장되어 있는 메모리 주소 기억
종류) 변수, 함수, 클래스 등
특징) 실행 컨텍스트에 등록, 호이스팅 됨
심볼 테이블

변수 호이스팅

변수 선언문이 코드의 선두로 끌어올려진 것처럼 동작하는 것
런타임이 아니라 그 이전단계(소스코드 평가과정)에서 실행됨

표현식이 평가*되어 생성된 결과
*평가 : 식을 해석해서 값을 생성하거나 참조하는 것

리터럴

사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
종류) 정수 리터럴, 부동 소수점 리터럴, 2/8/16진수 리터럴 / 문자열 리터럴 / 불리언 리터럴 / null 리터럴 / undefined 리터럴 // 객체 리터럴, 배열 리터럴, 함수 리터럴, 정규표현식 리터럴

표현식 (expression)

값으로 평가될 수 있는 문
값을 생성하거나 참조함
종류) 리터럴, 식별자(변수, 함수 이름), 연산자, 함수 호출 등

문 (statement)

프로그램을 구성하는 기본 단위이자 최소실행 단위, 명령문
여러 토큰*으로 구성
종류) 선언문, 할당문, 조건문, 반복문 등
*토큰 : 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소 ex. 키워드, 식별자, 연산자, 리터럴, 세미콜론, 마침표

표현식인 문 vs. 표현식이 아닌 문

값으로 평가 가능 vs. 불가능
변수에 할당 가능 vs. 불가능
크롬 콘솔창에 평가된 값 vs. undefined(완료값)

데이터 타입

7개
원시 타입
숫자타입
모든 수를 ‘실수’로 처리 ( 1 === 1.0 ) Infinity, -Infinity, NaN 정수, 실수, 8진수 등 모두 2진수로 저장하고 10진수로 해석
문자열타입
변경 불가능한 값, 템플릿 리터럴
불리언 타입
true(=1), false(=0)
undefined 타입
정의되지 않은 자스 엔진이 쓰는 값, 개발자는 null 사용 숫자로 타입 변환x
null 타입
의도적 부재, 참조 제거
심벌 타입
변경 불가능한 원시타입 값, 유일무이, 값 외부로 노출 x, 중복 x
객체 타입
객체, 함수, 배열 등
원시 타입 외 모두

데이터 타입 필요성

1.
확보할 메모리 공간 크기 결정
(문자열, 숫자 타입 외 크기 명시적 규정 없음)
2.
한 번에 읽어들일 메모리 공간 크기 파악
3.
데이터 타입에 의한 값의 해석

연산자

산술 연산자
이항 상술 연산자
단항 산술 연산자
문자열 연결 연산자
할당 연산자
: 부수효과 o
비교 연산자
: 불리언 값 반환, Number.isNaN(), Object.is()
동등/일치 비교 연산자
대소 관계 비교 연산자
삼항조건 연산자 (ternary operator)
: ‘표현식인 문’ (값처럼 사용 가능)
if…else문은 ‘표현식이 아닌 문’으로 값처럼 사용 불가
논리 연산자
: 부수효과 x
논리 부정(!) 연산자 - 불리언값 반환
논리합(||), 논리곱(&&) 연산자 - 불리언값 아닐 수 있음 (단축 평가)
쉼표 연산자
: 마지막 평가 결과 반환
그룹 연산자
typeof 연산자
: 데이터 타입을 문자열로 반환, 7개 데이터 타입과 일치하지 않음
string, number, boolean, undefined, symbol / object, function
선언하지 않은 식별자는 에러 x, undefined 반환
null 반환 경우 없음, null은 object 반환(설계오류), typeof말고 그냥 일치 연산자 사용하기
함수는 function 반환, object 아님
지수 연산자(ES7) **
그 외 연산자
?.
?? (nullish 연산자) : 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다.
nullish하다 : null, undefined
delete
new
instanceof
in : ??(이터러블이라고 해야할까요 나중에 수정해보죠)의 키 값을 순회함
// || : false, null, undefined, NaN, 0, -0, 0n, "" // ?? : null, undefined // falsy 하다 : false, null, undefined, NaN, 0, -0, 0n, "" // nullish 하다 : null, undefined
JavaScript
복사