# 함수 생성 시점과 함수 호이스팅 // 함수 참조 console.dir(add); // ƒ add(x, y) console.dir(sub); // undefined // 함수 호출 console.log(add(2, 5)); // 7 console.log(sub(2, 5)); // Uncaught TypeError: sub is not a function // 함수 선언문 function add(x, y) { return x + y; } // 함수 표현식 var sub = function (x, y) { return x + y; } 함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출할 수 있다. 함수 표현식으로 정의한 함수는 함수 표현식 이전에 호출할 수 없다. => 함수 선언문으로 정의한 함수와 함..
JavaScript

# 함수를 사용하는 이유 코드의 재사용: 함수는 필요할 때 여러 번 호출할 수 있다 유지보수의 편의성: 코드의 중복을 억제 코드의 신뢰성을 높인다: 코드의 중복이 적으므로 실수를 줄일 수 있다 코드의 가독성을 향상시킨다: 적절한 함수 이름을 쓰면 내부 코드를 이해하지 않아도 함수의 역할을 파악할 수 있다 가독성이 좋은 코드가 좋은 코드이기 때문에 함수를 적극 활용하는 것이 좋다. # 함수 리터럴 자바스크립트의 함수는 객체 타입의 값이다. 숫자 값을 숫자 리터럴로 생성하고 객체를 객체 리터럴로 생성하는 것처럼 함수도 함수 리터럴로 생성할 수 있다. 리터럴이란? 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기방식을 말한다. 리터럴 = 값을 생성하기 위한 표기법 함수 리터럴도 평가되..

# 내부슬롯(internal slot)과 내부 메서드(internal method) EMCAScript 사양에 등장하는 이중 대괄호 ([[...]])로 감싼 이름들이 내부 슬롯과 내부 메서드이다. 자바스크립트 엔진에서 실제로 동작하지만 개발자가 직접 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아니다. 원칙적으로 자바스크립트 내부슬롯과 내부 메서드에 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지는 않으나, 일부 내부 슬롯과 일부 메서드에 한하여 간접적으로 접근할 수 있다. 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부로직이므로 원칙적으로 직접 접근을 할 수 없지만 __proto__ 를 통해 간접적으로 접근가능하다. const obj = ..