• 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
  • 相关阅读:
    【C语言】指针和数组的深入理解(第四期)
    stc8H驱动并控制三相无刷电机综合项目技术资料综合篇
    数据库 MySql快速导入外部数据库流程
    转债打新监听
    rv1126-rv1109-openssh
    基于java+springmvc+mybatis+vue+mysql的大学生健康管理系统
    Linux 字符设备
    Latex 写论文排版方法(vscode)
    Linux--socket编程
    pandas之数据的合并与分组
  • 原文地址:https://blog.csdn.net/2202_75345049/article/details/132498099