Yoonkyoungme/js-deep-dive-study

[1주차] CH09 ~ CH12

Opened this issue · 2 comments

CH09

  • 옵셔널 체이닝( Optional Chaining)이란 무엇인가요?
  • null 병합 연산자(Nullish Coalescing Operator)가 무엇인가요?
  • 옵셔널 체이닝과 null 병합 연산자는 어떤 상황에서 유용한가요?

CH10

  • 객체 프로퍼티에 접근하는 방법에는 어떤 것들이 있나요?

CH11

  • 원시 타입과 객체 타입의 차이점은 무엇인가요?

CH12

  • 호이스팅이란 무엇인가요?
  • 변수 호이스팅과 함수 호이스팅의 차이점은 무엇인가요?

함수 리터럴 표현식이라는게 그냥 함수 그 자체라고 해야할까요? 선언된것이 아니고 그냥 함수인것이죠. 예시에서 보면 선언되지 않고 함수 이름과 함수 내용만 있는 함수 그 자체.
함수 표현식은 함수 선언 + 함수 내용 이라면 함수 리터럴 표현식은 그냥 함수라고 하면 맞는 표현일까요?

리터럴이란 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법을 말합니다.

문자열 리터럴은 '..' 이죠
불리언 리터럴은 true, false
정수 리터럴은 10, 20, 23, 34 ... 등
함수 리터럴은 function() {} 가 되겠습니다.

()그룹 연산자는 우선 순위를 평가하는 연산자라고 합니다.
() 그룹연산자 안에 들어가는 피연산자은 값으로 평가가 되어야 합니다
동일한 코드도 문맥에 따라 달라지는 자바스크립트의 똑똑한(?) 특성으로 인해 () 안에 있는 값을 함수 리터럴 표현식으로 해석합니다
함수 리터럴 표현식은 함수의 이름만 있지 식별자는 없습니다. (함수는 함수 이름을 통해서가 아닌 식별자로 호출이 됩니다. 함수 이름은 함수 몸체 내에서만 참조 할 수 있는 식별자입니다.)
함수 외부에서는 함수 이름으로 참조를 할 수 없으므로 에러가 나는 것이죠.

참고로

(function foo() {
var a = 3; 
var b = 5;
return a * b;
}());

() 안에 있는 기명 함수는 함수 리터럴 표현식이 되고 그 함수 리터럴 표현식을 바로 실행 한다는 뜻이 되네요
당연히 외부에서는 사용할 수 없습니다.

함수 리터럴, 함수 선언식, 함수 표현식에 대해 잘 정리된 글 공유합니다.
참고