Red*_*wan 105 javascript nested function
我想知道JavaScript是否支持在另一个函数或嵌套函数中编写函数(我在博客中阅读它).这真的有可能吗?事实上,我已经使用过这些但不确定这个概念.我真的不清楚 - 请帮忙!
ken*_*ytm 184
这真的有可能吗?
是.
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));
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 28
以下是令人讨厌的,但用于演示如何处理像任何其他类型的对象一样的函数.
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();
Run Code Online (Sandbox Code Playgroud)
cgp*_*cgp 16
函数是第一类对象,可以是:
以Kenny给出的例子为基础:
function a(x) {
var w = function b(y) {
return x + y;
}
return w;
};
var returnedFunction = a(3);
alert(returnedFunction(2));
Run Code Online (Sandbox Code Playgroud)
会提醒你5.
小智 13
是的,可以编写和调用嵌套在另一个函数中的函数.
试试这个:
function A(){
B(); //call should be B();
function B(){
}
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*ald 10
您不仅可以将已传递给另一个函数的函数作为变量返回,还可以将其用于计算内部但在外部定义.看这个例子:
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
Run Code Online (Sandbox Code Playgroud)
ES6 的替代解决方案:
const currying = (x) => (y) => x + y;
console.log(currying(5)(3));
Run Code Online (Sandbox Code Playgroud)
将打印到控制台:8
归档时间: |
|
查看次数: |
147766 次 |
最近记录: |