개념을 이해한다. === 용어를 정확히 이해하고 설명할 수 있다.
자바스크립트 = 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
복사