js函数add(1)(2)(3)连续调用效果

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

js函数add(1)(2)(3)连续调用效果属于前端实例代码,有关更多实例代码大家可以查看

本代码是在网上看到的,感觉挺有意思的,所以这里就分享一下,并且做一下详细介绍。

感觉这代码页具有一定的实用价值,就算是没有,其中的一些相关知识也是挺好的,感兴趣的朋友可以参考一下。

如果要实现标题形式的调用方式可以实用类似如下代码:

var add = function(a){
  return function(b){
    return function(c){
      return a+b+c;
    };
  };
};
console.log(add(1)(2)(3));

上面的代码确实实现了标题所示的调用方式,但是上面的一个最大问题就是太过于死板,调用的次数已经固定,如果是add(1)或者add(1)(2)(3)(4)都会有问题,不能够正确计算结果,所以我们需要一个更为灵活的方案,代码实例如下:

function add(x){
  var sum=x;
  var tmp=function(y){
    sum=sum+y;
    return tmp;
  };
  tmp.toString=function(){
    return sum;
  };
  return tmp;
}
console.log(add(1)(2)(3));
console.log(add(1)(2)(3)(4));

上面的代码实现了灵活的调用效果,下面介绍一下它的实现过程。

代码注释:

(1).function add(x){},此函数实现了多次调用效果,参数就是要传递的数字。

(2).var sum=x,将x值赋值给sum。

(3).var tmp=function(y){

  sum=sum+y;

  return tmp;

},声明一个函数,此函数实现了数字的累加效果,并且会返回函数本身。

(4).tmp.toString=function(){

  return sum;

},重写了tmp的toString()方法,目的是为了返回计算结果值,add(1)(2)(3)单纯这样获取的是函数对象,而是用console.log()输出add(1)(2)(3)的时候就会隐式调用toString()方法,于是就会获取计算值。

(5).return tmp,返回函数。

js函数add(1)(2)(3)连续调用效果,这样的场景在实际项目中还是用的比较多的,关于js函数add(1)(2)(3)连续调用效果就介绍到这了。

回复

我来回复
  • 暂无回复内容