자바스크립트 개념 요약 ver2
타입 변환
타입변환 - 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것
명시적 타입 변환 - 개발자의 의도에 따라 다른 타입으로 변환
- 문자열 타입으로 변환 - String(), toString(), 문자열 연결 연산자(+)
- 숫자 타입으로 변환 - Number(), parseInt(), 산술연산자 이용
- 불리언 타입으로 변환 - Boolean(), !!사용
암묵적 타입변환 - 표현식 평가 도중 자바스크립트에 엔진에 의해 암묵적으로 타입이 자동 변환
문자열 타입으로 변환 - +연산자는 피연산자 중 하나 이상이 문자열이면 피연산사 중 문자열이 아닌 피연산자를 문자열 타입으로 암묵적 타입 변환
숫자 타입으로 변환 - 자바스크립트 엔진은 산술 연산자 표현식을 평가하기 위해 피연산자 중 숫자 타입이 아닌 피연산자를 숫자 타입으로 암묵적 타입 변환
불리언 타입으로 변환 - 자바스크립트 엔진은 논리적 참/거짓으로 평가되어야 하는 표현식일 때 truthy 값은 true로 falsy 값은 false로 암묵적 타입 변환
단축평가 - 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것
논리 연산자를 사용한 단축 평가
단축 평가 표현식 평가 결과 true || anything true false || anything anything true && anything anything false && anything false
객체
객체 - 관련된 데이터와 함수(프로퍼티, 메소드)의 집합, 여러 속성(프로퍼티)을 하나의 변수에 저장할 수 있도록 해주며 key/value의 구조로 저장됨
프로토타입 - 자바스크립트의 모든 객체는 최소 하나 이상의 다른 객체로부터 상속을 받으며, 상속되는 정보를 제공하는 객체를 프로토타입이라 한다.
프로퍼티 - 객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성된다.
프로퍼티 접근 - 마침표 프로퍼퍼티 접근 연산자(.)을 사용하는 마침표 표기볍, 대괄호 프로퍼티 접근 연산자([])를 사용하는 대괄호 표기법
프로퍼티 값 갱신 - 이미 존재하는 프로퍼티에 값을 할당하면 프로퍼티 값이 갱신
프로퍼티 값 생성 - 존재하지 않는 프로퍼티 값을 할당하면 프로퍼티가 동적으로 생성되어 추가되고 프로퍼티 값이 생성
프로퍼티 값 삭제 - delete 연산자는 객체의 프로퍼티를 삭제
원시 값과 객체의 비교
원시 값
변경 불가능한 값 - 원시 타입 값은 재할당하면 메모리 공간에 저장되어 있는 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 원시 값을 저장한 후 변수는 새롭게 저장한 원시 값을 가리킨다.
-> 메모리 공간의 주소가 동일한게 아니라 재할당시 메모리 주소가 변경된다
문자열과 불변성 - 문자열은 유사 배열 객체이면서 iterator 메소드를 가지고 있어 배열과 유사하게 각 문자에 접근이 가능하다.
값에 의한 전달 - 변수에 원시 값을 갖는 변수를 할당하면 할당받는 변수에는 원본의 원시 값이 복사되어 전달 -> 다른 메모리 공간에 저장되는 별개의 값
객체
객체 - 변경 가능한 값이며 프로퍼티를 동적으로 추가, 삭제할 수 있다.
변경 가능한 값 - 객체를 할당한 변수는 메모리 공간에 참조 값(생성된 메모리 공간의 주소)를 통해 실제 객체에 접근한다.
ex) let obj={name : 1} 이 변수가 저장된 메모리 공간을 보면 객체가 저장되어 있는 것이 아니라 객체가 저장되어 있는 메모리 공간의 주소값이 저장되어 있음
참조에 의한 전달 - 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조값(메모리 공간의 주소)가 복사되어 전달되기 때문에 어느 한쪽에서 객체를 변경하면 서로 영향을 주고 받는다.
얕은 복사 - 객체가 서로 같은 주소 값을 바라보며, 객체에 중첩되어 있는 객체의 경우 참조 값을 복사한다
깊은 복사 - 객체에 중첩되어 있는 객체까지 모두 복사 -> 원시 값처럼 완적한 복사본을 만든다(값 자체의 완전한 복사)
'TIL' 카테고리의 다른 글
AWS (0) | 2022.02.13 |
---|---|
라우팅 (0) | 2022.02.13 |
[TIL] RESTful API (0) | 2022.01.26 |
[TIL] 리액트에서 FontAwesome 사용하기 (0) | 2022.01.26 |
[TIL] HTML 신기한 태그 (0) | 2022.01.18 |