zoukankan      html  css  js  c++  java
  • 前段时间看到群里有人发的关于柯里化的面试题,看到感觉挺有趣的

    很久没上网写随笔了,最近看一个 c 的教学录像,被那个老师激励了,就记起博客园,真有段时间被遗忘掉。。。

    记得之前在群里面看到有一道面试题,要求写一个 function,在叫用后返回任意参数的和。要求出来结果是这样的:

    sum(1,2)  // 返回3

    sum(1)(2) // 返回3

    sum(1)(2,3) // 返回6

    sum(1)(2)(3) //返回6

    当时看了感觉很有趣,也不知道什么是柯里化,今天不知道为什么突然想起这个题目 ,最近刚好看到有人说柯里化的话题,就在chrome的调试模式试着 做了一下:

     1 function sum(){
     2     let _arg = [];
     3     _arg.push(...arguments);
     4     var ret = function(){
     5         _arg.push(...arguments);
     6         // arguments.callee.valueOf=()=>(_arg.reduce((a,b)=>a+b,0));
     7         return arguments.callee;
     8     }
     9     ret.valueOf=()=>(_arg.reduce((a,b)=>a+b,0));
    10     return ret;
    11 }

    这里重点就是valueOf,js原生对象基本都有toString和valueOf 方法, 除了 null和undefined,如果valueOf返回原生对象本身,这里覆盖掉返回的function的valueOf,使其返回希望得到的结果(参数的求和)。

    另外还有个闭包的,在sum里面声明 _arg 返回的函数需要每次调用的时候存储到一个集合里面,作为最后求和用。简单的满足 题目要求。

    希望坚持记录,一点一点积累 的过程。

    名词解释(摘录百度百科):

  • 相关阅读:
    bzoj4321
    bzoj1800
    codeforces396C
    codeforces400C
    codeforces271D
    关于jsp中jstl-core标签循环遍历的使用
    hibernate坑边闲话2
    hibernate坑边闲话
    hibernate中实体与数据库中属性对应的类型
    MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等
  • 原文地址:https://www.cnblogs.com/KevinHo/p/8930861.html
Copyright © 2011-2022 走看看