js题解(三)

简介: 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)
            }
        }
    }

}

模块

完成函数 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 //注意逗号后面不要少了空格
        }
    }

}

乘法

求 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);

}

改变上下文

改变上下文

function alterContext(fn, obj) {
   
  return fn.bind(obj)();
}
目录
相关文章
|
搜索推荐 JavaScript 算法
详细解析冒泡排序,JS如何基本实现的。
详细解析冒泡排序,JS如何基本实现的。
|
JavaScript
js题解(二)
js相关题目
36 0
|
JavaScript
js实现二分查找
js实现二分查找
49 0
|
JavaScript 数据安全/隐私保护
js练习题
js练习题
|
5月前
|
JavaScript
JS 实现动态规划
JS 实现动态规划
31 0
|
JavaScript 前端开发
Js数组常见的题目,你能做对几个
Js数组常见的题目,你能做对几个
65 0
|
7月前
|
算法 JavaScript
|
JavaScript
js题解(四)
js题解(四)
41 2
|
JavaScript
js题解(一)
斐波那契数列 邮箱验证 计时器
66 1
|
JavaScript
JS 实现斐波那契数列 #15
JS 实现斐波那契数列 #15
76 0