• js题解(三)


    柯里化

    已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:
    1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)
    2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1
    3、调用 b 之后,返回一个函数 c, c 的 length 属性值为 1
    4、调用 c 之后,返回的结果与调用 fn 的返回值一致
    5、fn 的参数依次为函数 a, b, c 的调用参数

    function curryIt(fn) {
        return function(a) {
            return function(b) {
                return function(c) {
                    return fn(a, b, c)
                }
            }
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    模块

    完成函数 createModule,调用之后满足如下要求:
    1、返回一个对象
    2、对象的 greeting 属性值等于 str1, name 属性值等于 str2
    3、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ’ + name属性值

    function createModule(str1, str2) {
       // return 
       // var obj = ;
        return {
            greeting:str1,
            name:str2,
            sayIt:function (){
                return this.greeting+', '+this.name //注意逗号后面不要少了空格
            }
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    乘法

    求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题

    function multiply(a, b) {
     
        // 1.先将两个数转成字符串
        let str1 = a.toString()
        let str2 = b.toString()
     
        // 2.获取小数点后的位数,不一定有小数位
        let lenA = (str1.indexOf('.')===-1)?0:(str1.length - str1.indexOf('.')-1)
        let lenB = (str2.indexOf('.')===-1)?0:(str2.length - str2.indexOf('.')-1)
     
        // 3.取最精确的小数位数
        let len = Math.max(lenA,lenB)
        //把数字转换为字符串,结果的小数点后有指定位数的数字:
        //toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
        return (a*b).toFixed(len);
     
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    改变上下文

    改变上下文

    function alterContext(fn, obj) {
      return fn.bind(obj)();
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    SBT40100VFCT-ASEMI塑封肖特基二极管SBT40100VFCT
    5分钟打造好用好看API文档
    有来实验室|第一篇:Seata1.5.2版本部署和开源全栈商城订单支付业务实战
    Sentinel配置持久化到Nacos实现流控熔断
    【Unity3D】运动模糊特效
    【面试心得】WebBench 整理
    MySQL常见面试题(一)
    Typescript学习
    元宇宙001 | 情绪无法自控?元宇宙助你一臂之力
    IO流(JAVA)
  • 原文地址:https://blog.csdn.net/2202_75345049/article/details/132498099