有人可以向我解释以下代码中发生了什么。该函数正在接收 <div class ="container">
<h3>PROVIDER ENROLLMENT APPLICATION</h3>
</div>
<div class ="tabs">
<a href="tabsA.html"><span>Sec A</span></a>
<a href="tabsB.html"><span>Sec B</span></a>
<a href="tabsC.html"><span>Sec C</span></a>
<a href="tabsD.html"><span>Sec D</span></a>
<a href="tabsE.html"><span>Sec E</span></a>
<a href="tabsF.html"><span class="active">Sec F</span></a>
<a href="tabsG.html"><span>Sec G</span></a>
<a href="tabsH.html"><span>Sec H</span></a>
<a href="tabsI.html"><span>Sec I</span></a>
<a href="tabsJ.html"><span>Sec J</span></a>
<a href="tabsK.html"><span>Sec K</span></a>
<a href="tabsL.html"><span>Sec L</span></a>
<a href="tabsM.html"><span>Sec M</span></a>
</div
作为参数,那么n
来自何处?整个代码令人困惑..如果有人可以解释?
m
答案 0 :(得分:7)
这展示了一种名为currying的函数式编程技术。 (也与partial function appliction相关)
大于>
通常需要2个参数(一个在左边,一个在右边)。这是一种一次送一个的方式。
如果将其称为内联,可能更容易看到发生了什么:
greaterThan(10)(11);
从上面的示例中可以看出,10
传入了n
参数,然后11
传递了m
参数。< / p>
传递10
的第一个应用程序输出如下所示的函数:
function(m) { return m > 10; };
这是部分应用程序中的第一个应用程序。
从那里很容易看出如何传递11
以获得最终结果。
所以,要打破它:
function greaterThan(n) {
return function(m) { return m > n; };
}
//var greaterThan10 = greaterThan(10); -- is equivalent to:
var greaterThan10 = function(m) { return m > 10; };
console.log(greaterThan10(11)); //--> true
答案 1 :(得分:6)
m
为11
,在第二次通话期间传入。
当您致电greaterThan(10)
时,它会返回一个新功能,如下所示:
function(m) {
return m > 10;
}
然后保存为greaterThan10
。这称为currying。
答案 2 :(得分:2)
a0
是一个返回另一个函数的函数,greaterThan
是该返回函数的paraterer。所以在你的代码中:
m
和
var greaterThan10 = function(m) { return m > 10; };
与console.log(greaterThan10(11));
答案 3 :(得分:2)
当你调用函数greaterThan
时,它会返回另一个函数,但不会返回一些浮点数。内部函数知道n
,因为它在函数greaterThan
内。
因为包装函数返回另一个函数,你可以像这样调用第二个函数
var result = greaterThan(10)(11);
第一个参数10
将用于包装函数,但结果是函数,因此您可以立即传递内部函数的参数。
只有拥有return function(){...}
你可以试试像
这样的东西var a = function (x){
return function(y){
return function(z){
return x*y*z;
}
}
}
var result = a(5)(3)(8);
答案 4 :(得分:1)
你有两个功能。
n
来自第一个函数的调用。
m
来自第二个函数(第一个函数的返回值)被调用。
greaterThan10 = greaterThan(10);
// ^^ n
greaterThan10(11))
// ^^ returned function
// ^^ m