오늘 공부한 내용 요약
( 모던 JavaScript 튜토리얼 학습 )
함수는 함수는 호출이 가능한 행동 객체
let sayHi = function() {
alert("Hi");
};
alert(sayHi.name);
이름이 없는 함수의 이름을 지정할 땐 컨텍스트에서 이름을 가져오는 이 기능을 'contextual name’이라고 함.
객체 메서드의 이름도 가능
let user = {
sayHi() {
// ...
},
}
alert(user.sayHi.name); // sayHi
function f1(a) {}
function f2(a, b) {}
function many(a, b, ...more) {}
alert(f1.length); // 1
alert(f2.length); // 2
alert(many.length); // 2
-> 나머지 매개변수는 개수에 포함되지 않음
function sayHi() {
alert("Hi");
// 함수를 몇 번 호출했는지 세봅시다.
sayHi.counter++;
}
sayHi.counter = 0; // 초깃값
sayHi(); // Hi
sayHi(); // Hi
alert( `호출 횟수: ${sayHi.counter}회` ); // 호출 횟수: 2회
function makeCounter() {
function counter() {
return counter.count++;
};
counter.count = 0;
return counter;
}
let counter = makeCounter();
counter.count = 10;
alert( counter() ); // 10
1.이름을 사용해 함수 표현식 내부에서 자기 자신을 참조할 수 있습니다.
2.기명 함수 표현식 외부에선 그 이름을 사용할 수 없습니다.
(이름을 붙여도 여전히 함수 표현식이다)
let sayHi = function func(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
func("Guest"); // func를 사용해서 자신을 호출합니다.
}
};
sayHi(); // Hello, Guest
// 하지만 아래와 같이 func를 호출하는 건 불가능합니다.
func(); // 에러 (기명함수 표현식 밖에서는 이름에 접근 불가)
공부사이트
위의 내용은 공부중 본인이 이해한 내용으로 몇몇 틀린 내용이 있을 수 있습니다.
회독중 발견시 수정하겠습니다