javascript世界中这两种模式之间是否有区别?
public $items;
public $totalQty = 0;
public $totalPrice = 0;
public function __construct($oldCart)
{
if ($oldCart) {
$this->items = $oldCart->items;
$this->totalQty = $oldCart->totalQty;
$this->totalPrice = $oldCart->totalPrice;
}
}
a(b)(c)(f)
它们在功能上相等,并且都增加了调用堆栈的长度。
似乎撰写模式(#1)更受欢迎,想知道我们是否应该选择一个理由?
答案 0 :(得分:3)
是的,有区别。
a(b)(c)(f)
-在这里,您拥有currying函数a
,该函数将函数返回为结果,将函数返回为结果。
a(b(c(f)))
-这里有3个常规函数(a,b,c),其中每个函数的结果作为参数提供给另一个函数。
要了解第一种方法的好处,您必须熟悉函数式编程(这是全科学的知识,对此答案的解释非常广泛)。