JavaScript에서 함수는 객체랍니다.
name, length 등등
javascript에서 함수가 객체다?
js에서 함수는 값임. 그리고 함수 자료형은 객체임. 즉 호출 가능한 행동 객체이다. 따라서 호출 가능하고 객체처럼 프로퍼티 추가 제거가 가능함.
-
name 프로퍼티: 함수 이름 불러오는 프로퍼티 . 객체 메서드도 불러올 수 있음.
function sayHi() { alert("Hi"); } alert(sayHi.name); // sayHi
-
length 프로퍼티: 매개변수의 개수를 반환
function f2(a, b) {}
alert(f2.length); // 2
여기서 …handlers는 나머지 매개변수이다. 즉, 전달된 인수 중에서 정해진게 아닌 나머지들을 배열로 모아서 전달하는것…
즉 [ ()⇒alert(’OK선택), result⇒ alert() ]
이 들어간다.
if에서 handler 인자 갯수에 따라서 실행됨. 이때 ()⇒ 이게 length가 0인거고 나머지는 else ahdnler로 들어감.
사용자가 isYes 라면 즉, 컨펌 창에 yes 버튼을 눌렀으면 ok를 눌렀습니다.. 그게 아니면 실행하는게 없음.
즉 사용자가 ok누르면 ok선택했따 + alert(true)가 뜨고
cancel을 누르면 0일때 isYes일때만 실행하니 없고, false만 alert로 나타난다.
function ask(question, ...handlers) {
let isYes = confirm(question); //confirm은 밑에 있는 창의 값.
for (let handler of handlers) {
if (handler.length == 0) {
if (isYes) handler();
} else {
handler(isYes);
}
}
}
// 사용자가 OK를 클릭한 경우, 핸들러 두 개를 모두 호출함
// 사용자가 Cancel을 클릭한 경우, 두 번째 핸들러만 호출함
ask(
"질문 있으신가요?",
() => alert("OK를 선택하셨습니다."),
(result) => alert(result)
);