以下是来自javascript patterns的一个currying片段:
function add(x, y) {
var oldx = x, oldy = y;
if (typeof oldy === "undefined") { // partial
return function (newy) {
return oldx + newy;
}
}
// full application
return x + y;
}
参考:https://github.com/shichuan/javascript-patterns/blob/master/function-patterns/currying.html
当地的vars oldx和oldy有什么意义?
答案 0 :(得分:3)
此处完全没有变量oldx
和oldy
;代码在没有它们的情况下表现相同:
function add(x, y) {
if (typeof y === "undefined") { // partial
return function (y) {
return x + y;
}
}
// full application
return x + y;
}
此处返回的函数可以访问外部作用域变量,无论这些变量是使用var
声明还是声明为外部函数的形式参数。
一般来说,如果x
是原语,如果您需要该值的副本以独立于原始值进行更改,则有时将其分配给新变量是有意义的:
function foo(x) {
var newX = x;
newX += 7;
// now newX and x are different
// ...
}
但是,此代码中不存在此需求,因此完全没有必要。