모던 JS Deep 공부내용 정리(4-11)

개발쟁이·2021년 3월 30일
0

모던 자바스크립트 Deep Dive

4. 변수

  • 변수 : 메모리 공간 식별위해 붙인 이름으로 프로그래밍 언어 컴파일러 / 인터프리터에 의해 값이 저장된 메모리의 공간 주소로 치환되어 실행된다.
  • 식별자 : 메모리 주소기억으로 값이 저장되어있는 메모리 주소와 맵핑됨.
  • 변수 선언 : 변수 생성, 값 저장위한 메모리 공간확보, 공간과 주소 연결해 값 저장할수 있게 준비.

변수 선언시,JS 엔진에 변수 존재 알림 -> 값 저장 위한 메모리 공간확보 -> undefined 할당(초기화) -> 변수 이름 식별자는 실행 context에 등록

변수 선언과 값의 실행 시점이 다름. 변수에 값을 할당할때, udnefined 엿는데 여기에 덮어씌우는게 아니고 새로운메모리 공간을 확보후 값을 저장함 이때 식별자 참조 하지 않는 메모리 공간은 가비지 콜랙터에 의해 자동으로 해체됨.
호이스팅: 변수 선언문이 코드 맨 위로 끌어올려진거서럼 작동하는 JS 고유 특징.

6. 데이터타입

  • 숫자타입 : 자바스크립트는 모든 수를 실수로 처리.
  • 문자열 타입: 전세계 대부분의 문자 표현 가능, 자바스크립트의 문자열은 원시타입이고 변경 불가능한 값
  • 불리언타입
  • undefined 타입 :var 키워드로 선언한 변수는 암묵적으로 undefined 로 초기화됨. 개발자가 초기화한다고 undefined라고 적어버리면 안되고 null를 할당함.
  • 심벌타입 : 변경 불가능 원시타입. 중복되지 않는 유일무이한 값이다. 이름이 충돌할 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용

8. 제어문

break문 : 레이블 문, 반복문 , switch문의 코드 블럭 탈출
레이블문. - 식별자가 붙은문으로, 프로그램의 실행 순서를 제어하는데 사용 switch 문의 case, default 문도 레이블 문이라고 할수 있음.

9. 타입변환과 단축평가

명시접 타입변환(: explicit coercion type casting ) : 개발자가 의지가 담겨있음.
타입 강제 변환/ 암묵적 타입변환 (type coercion/ implicit coercion) : 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환
암묵적 타입변환은, 에러 없이 평가 위해 피연산자의 값을 암묵적 타입 변환해 새로운 타입값을 만들어 한번 사용하고 버림 10+'' 이런식으로

불리언 타입으로 변환 : false, undefined, null, 0, -0 , '' 은 false로 변환됨

단축평가 : 논리 연산의 결과를 결정하는 피연산자 타입 변환하지 않고 그대로 반환 -> if문 대체 가능 , 인수전달되지않아 발생하는 undefined 에러 방지 도 가능

새롭게 도입된 연산자

  • Optioanl_chaining : 좌항의 피연산자가 null/ undefiend 면 undfined 반환/ 우항 프로퍼티 참조 이어가는 것 새로 나옴 (ECMAScript2020도입) -mdn
  • Nullish coalescing operator : 좌항의 피연산자가 null/ undefiend 면 우항 피연산자 반환, 아니면 좌항 피연산자 반환. 변수에 기본값 설정시 유용함 (ECMAScript2020도입) -mdn

10. 객체 리터럴

자바스크립트: 객체 기반의 프로그래밍 언어. 원시값 제외 나머지(함수, 배열, 정규표현식)는 모두 객체 원시 타입: 단 한의 값만 나타냄. 객체 타입은다양한 값을 하나의 단위로 구성한 복합적 자료구조
프로퍼티: 객체의 상태 나타내는 값
메서드: 프로퍼티 참고하고 조작할수 있는 동작

객체 리터럴 표기법

프로퍼티 정의안하면 빈 객체 생성되고 이미 존재하는 프로퍼티 키 중복 선언시 덮어씀.

ES6 객체 리터럴 확장기능 : 변수이름과 프로퍼티 키가 동일할때 프로퍼티 키 생략o

var a =5, b=7;
var obj ={
a:a,
b:b
}
console.log(obj); //{a =5, b=7}

//프로퍼티 축약표현 
let a =5, b=7;
const obj ={a,b}
console.log(obj); //{a =5, b=7}

11.원시값과 객체의 비교

  • 원시 타입: 변경 불가능한 값으로 원시 값을 다른 변수에 할당시 원본값이 복사되어 전달됨 (읽기전용값임)

  • 참조에의해 전달 : 객체를 가르키는 변수를 다른 변수에 할당. (참조값이 복사)

변수 값을 변경하기 위해 원시값을 재할당 하면 새로운 메모리 공간 확보, 저장, 변수가 참조하던 메모리 공간의 주소 변경 (불변성)

불변성을 갖는 원시 값을 할당 받는 변수는 재할당 외에 변수 값을 변경 할수 있는 방법이 없다. 그래서 데이터의 신뢰성을 보장함

객체는 할당한 변수가 기억하는 메모리 주소를 통해 메모리 공간에 접근하며 참조값에 접근한다. 참조값은 생성된 객체가 저장된 메모리 공간 주소 그 자체를 뜻한다.

객체는 여러개의 식별자가 하나의 객체를 공유 가능.

profile
개발 인생

0개의 댓글

관련 채용 정보