javascript - 实现语法的功能:var a = add(1)(2)(3); //6没看懂别人的代码

查看:137
本文介绍了javascript - 实现语法的功能:var a = add(1)(2)(3); //6没看懂别人的代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

实现语法的功能:var a = add(1)(2)(3); //6

function add(a) { 
      var temp = function(b) {return add(a + b);} 
      temp.valueOf = temp.toString = function(){return a;}; 
      return temp;
    } 
    var ans = add(1)(2)(3); 
    alert(ans); // 6

这段代码是别人写的,小弟才疏学浅没看明白,很多地方不知,请大神们帮分析一下,
关于add(a+b)递归糊涂,还有为什么要将temp的valueOf方法改变,这样有什么用等等问题

解决方案

简单的add(a)返回的事实一个函数add1, 然后add1(a)再继续返回,一直执行到结束。当然在执行过程中你得判断返回的值是一个函数还是一个返回的值。于是就有了使用valueOf来判断返回对象有没有valueOf方法,如果有那么就获得他的原始值,返回他的原始值。或者toString返回字符串。

这篇关于javascript - 实现语法的功能:var a = add(1)(2)(3); //6没看懂别人的代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆