zoukankan      html  css  js  c++  java
  • JavaScript把函数作为另一函数的参数

     首先说一下这个问题是怎么产生的:今天看排序算法,想要比较不同的排序算法的时间花费。

    最简单的时间统计方法是在程序块开始和结束时分别计时,求一下时间差就能得出该段代码的耗时。

    如:

    var foo = function (a, b) {
        return a + b
    }
    
    var t1 = new Date()
    foo(1, 2)
    console.log("cost time:", new Date() - t1)

    但是这样有个缺点就是,每测试一个函数,都要写一遍

    var t1 = new Date()
    .......
    console.log("cost time:", new Date() - t1)

    于是就想写一个函数,可以对被调用的函数性能进行测试。

    var foo = function () {
        console.log("foo")
    }
    
    var timer = function (bar) {
        var t1 = new Date()
        var res = bar()
        console.log("cost time:", new Date() - t1)
        return res
    }
    
    timer(foo)

    但是这样存在一个问题,如果foo本身是携带参数的,我们该如何传入它的参数呢?

    var foo = function (a, b) {
        console.log(a + b)
    }
    
    var timer = function () {
        var t1 = new Date()
        var res = this.apply(null, arguments)
        console.log("cost time:", new Date() - t1)
        return res
    }
    
    timer.call(foo, 1, 2)

    其中,call里面第一个参数就是我们要调用的函数,后面的参数就是对应被调函数的参数。这样就实现了函数作为另一函数的参数的功能!

  • 相关阅读:
    麦卡姆轮运动原理
    ESP32开发(2)esp32-cam采集图像
    ESP32开发(1)环境配置
    Cesium学习笔记2-3:视频投影
    Cesium中实时显示经纬度及视角高
    Cesium学习笔记2-5:内部使用阳历扩展
    Cesium学习笔记2-4:外部扩展
    Cesium学习笔记2-4:更多官方示例
    win10通过wifi分享上网
    更换源地址
  • 原文地址:https://www.cnblogs.com/miaodi/p/7591399.html
Copyright © 2011-2022 走看看