[TIL] 2022.04.07

Minsu Han·2022년 4월 8일
0

TODAY I LEARNED

목록 보기
30/46

오늘 한 일

  • 모던 자바스크립트 Deep Dive 07.연산자 ~ 12.함수

배운 것

  • 숫자가 NaN인지 조사하려면 === 이 아닌 빌트인 함수 Number.isNaN을 사용한다.
  • null 타입 여부 확인은 typeof 연산자가 아닌 === 을 사용하자
  • 논리 연산자를 사용한 단축 평가
  • 옵셔널 체이닝 연산자(?.) : 객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할 때 유용하다
  • null 병합 연산자(??) : 변수에 기본값을 설정할 때 유용
  • 객체: 키와 값으로 구성된 프로퍼티(data)와 메서드(behavior)로 구성
  • 자바스크립트에서 함수는 값으로 취급할 수 있기 때문에 프로퍼티 값으로 사용할 수 있다
  • 원시 타입과 객체(참조) 타입 차이점 3가지
  1. 원시 값은 변경 불가능, 객체는 변경 가능
  2. 원시 값은 변수(확보된 메모리 공간)에 실제 값을 저장, 객체는 참조 값을 저장
  3. 다른 변수에 할당시 원시 타입은 원본의 원시 값이 복사되어 전달되고(pass by value), 객체 타입은 원본의 참조 값이 복사되어 전달됨(pass by reference)
  • const 키워드를 사용한 변수에 할당한 객체는 변경할 수 있다
  • 자바스크립트는 클래스 없이 객체를 생성할 수 있으며 객체가 생성된 이후라도 동적으로 프로퍼티와 메서드를 추가할 수 있다. 프로퍼티를 삭제할 수도 있다
  • ===를 통해 객체를 할당한 변수를 비교하면 참조 값을 비교
  • 자바스크립트의 함수는 객체 타입의 값이다
  • 자바스크립트 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성하고 거기에 함수 객체를 할당한다
  • 함수는 함수 이름이 아니라 함수 객체를 가리키는 식별자로 호출한다
  • 자바스크립트의 함수는 값의 성질을 갖는 객체인 일급 객체다. 즉 함수는 값처럼 자유롭게 사용할 수 있으며 함수 리터럴로 생성한 함수 객체를 변수에 할당할 수 있다
  • 함수 선언문도 런타임 이전에 자바스크립트 엔진에 의해 먼저 실행된다(함수 호이스팅)
  • 함수 표현식의 함수 리터럴도 할당문이 실행되는 시점에 평가되어 함수 객체가 된다
  • 함수 표현식으로 함수를 정의하면 함수 호이스팅이 아닌 변수 호이스팅이 발생한다
  • 함수 호출 시 매개변수에 값을 전달하는 방식: call by value, call by reference
  • 콜백 함수: 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수
  • 비순수 함수, 순수 함수: 부수 효과(외부 상태에 의존하거나 외부 상태를 변경하는 효과)의 유무
  • 함수형 프로그래밍: 순수 함수와 헬퍼 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화해서 불변성을 지향하는 프로그래밍 패러다임
profile
기록하기

0개의 댓글