JavaScript函数多个小括号连续调用

快乐打工仔 分类:实例代码

JavaScript函数多个小括号连续调用属于前端实例代码,有关更多实例代码大家可以查看

在实际应用中可能有类似如下方式的函数调用方式:

func(1)(2)(3)

这就是函数柯里化的表现形式(当然并不定有此形式的就是柯里化的函数),下面进行一下简单介绍:

柯里化又称部分求值,一个柯里化的函数首先会接受一些传参,接受了这些传参之后,函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数内形成的闭包中被保存起来,到参数被真正求值的时候,之前传入的参数会被一次性用于求值。

首先看一段代码实例:

function func(str) {
  var f = function(s){
    return str+", "+s;
  }
  return f;
}
var str = func("antzone")("softwhy");
console.log(str);

上面的柯里化非常的不智能,如果我们需要连接三个字符串就无法正确实现了。

代码修改如下:

function func(str) {
  var ret = Array.prototype.slice.call(arguments).join(', ');
  var temp = function (str) {
    ret = [ret, Array.prototype.slice.call(arguments).join(', ')].join(', ');
    return temp;
  };
  temp.toString = function () {
    return ret;
  };
  return temp;
}
var tempFunc = func("antzone")("softwhy")("com");
console.log(tempFunc.toString());

上面的代码完美实现了字符串无限连接的功能。

关于JavaScript函数柯里化的更多内容可以参阅JavaScript 函数柯里化详解一章节。

JavaScript函数多个小括号连续调用,这样的场景在实际项目中还是用的比较多的,关于JavaScript函数多个小括号连续调用就介绍到这了。

回复

我来回复
  • 暂无回复内容