답변:
정말 가능합니까?
예.
function a(x) { // <-- function
function b(y) { // <-- inner function
return x + y; // <-- use variables from outer scope
}
return b; // <-- you can even return a function.
}
console.log(a(3)(4));
다음은 불쾌하지만 다른 종류의 객체처럼 함수를 처리하는 방법을 보여줍니다.
var foo = function () { alert('default function'); }
function pickAFunction(a_or_b) {
var funcs = {
a: function () {
alert('a');
},
b: function () {
alert('b');
}
};
foo = funcs[a_or_b];
}
foo();
pickAFunction('a');
foo();
pickAFunction('b');
foo();
함수는 다음과 같은 일류 객체입니다.
Kenny가 제공 한 예제를 기반으로 작성하려면 다음을 수행하십시오.
function a(x) {
var w = function b(y) {
return x + y;
}
return w;
};
var returnedFunction = a(3);
alert(returnedFunction(2));
5로 경고합니다.
예, 다른 함수에 중첩 된 함수를 작성하고 호출 할 수 있습니다.
이 시도:
function A(){
B(); //call should be B();
function B(){
}
}
다른 함수에 전달한 함수를 변수로 반환 할 수있을뿐만 아니라 내부 계산에 사용할 수도 있지만 외부에서 정의 할 수도 있습니다. 이 예를 참조하십시오.
function calculate(a,b,fn) {
var c = a * 3 + b + fn(a,b);
return c;
}
function sum(a,b) {
return a+b;
}
function product(a,b) {
return a*b;
}
document.write(calculate (10,20,sum)); //80
document.write(calculate (10,20,product)); //250