04_函数

作者: 源大帝 | 来源:发表于2017-08-21 15:10 被阅读0次

什么是函数?

  • 实现特定功能的n条语句的封装体
  • 只有函数是可以执行的, 其它类型的数据不能执行

为什么要用函数?

  • 提高代码复用
  • 便于阅读交流

如何定义函数?

  • 函数声明
  • 表达式

如何调用(执行)函数?

function test2 () {
    this.xxx = 'atguigu';
  }
  • test(): 直接调用
  • obj.test(): 通过对象调用
  • new test(): new调用
  • test.call/apply(obj): 临时让test成为obj的方法进行调用
var obj = {}
  function test2 () {
    this.xxx = 'atguigu'
  }
  // obj.test2()  不能直接, 根本就没有
  test2.call(obj) // obj.test2()   // 可以让一个函数成为指定任意对象的方法进行调用
  console.log(obj.xxx)

回调函数

1. 什么函数才是回调函数?

1). 你定义的
2). 你没有调
3). 但最终它执行了(在某个时刻或某个条件下)

比较好的回答:你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
链接:https://www.zhihu.com/question/19801131/answer/13005983
来源:知乎

2. 常见的回调函数?

  • dom事件回调函数 ==>发生事件的dom元素

  • 定时器回调函数 ===>window

  • ajax请求回调函数

  • 生命周期回调函数


even.py

#回调函数1
#生成一个2k形式的偶数
def double(x):
    return x * 2
    
#回调函数2
#生成一个4k形式的偶数
def quadruple(x):
    return x * 4

callback_demo.py

from even import *

#中间函数
#接受一个生成偶数的函数作为参数
#返回一个奇数
def getOddNumber(k, getEvenNumber):
    return 1 + getEvenNumber(k)
    
#起始函数,这里是程序的主函数
def main():    
    k = 1
    #当需要生成一个2k+1形式的奇数时
    i = getOddNumber(k, double)
    print(i)
    #当需要一个4k+1形式的奇数时
    i = getOddNumber(k, quadruple)
    print(i)
    #当需要一个8k+1形式的奇数时
    i = getOddNumber(k, lambda x: x * 8)
    print(i)
链接:https://www.zhihu.com/question/19801131/answer/27459821
来源:知乎

当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。打个比方,有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个行为是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)
链接:https://www.zhihu.com/question/19801131/answer/27459821
来源:知乎

相关文章

  • 04_函数

    什么是函数? 实现特定功能的n条语句的封装体 只有函数是可以执行的, 其它类型的数据不能执行 为什么要用函数? 提...

  • 第02天(函数、工程管理)_知识点图片

    01_普通函数调用流程 02_递归函数的调用流程 03_递归实现累加 04_工程管理 05_工程管理

  • 第05天(异常、文本文件处理)_01

    01_error接口的使用.go 02_error接口应用.go 03_显式调用panic函数.go 04_数组越...

  • 【每日知识】go语言基本语法(03)2018-06-11

    01_无参无返的函数 02_有参无返的函数 03_不定参数类型 04_不定参数的传递 05_一个返回值函数 06_...

  • 第03天(复合类型)_01

    01_指针基本操作.go 02_不要操作没有合法指向的内存.go 03_new函数的使用.go 04_普通变量做函...

  • 第02天(函数、工程管理)_01

    01_无参无返回值函数的使用.go 02_普通参数列表.go 03_不定参数类型.go 04_不定参数传递.go ...

  • 第01天(基本类型、流程控制)_01

    01_hello.go 02_hello.go 03_变量的使用.go 04_自动推导类型.go 05_Print...

  • 04_集合

    集合在面试的时候,经常被问到,关于集合我们需要掌握些什么呢? 你掌握了些什么呢? arraylist和linked...

  • 04_打家劫舍

  • 04_栈

    栈的初识 栈是一种特殊的线性表,只能在一端进行操作 往栈中添加元素的操作,一般叫做push,入栈 从栈中移除元素的...

网友评论

      本文标题:04_函数

      本文链接:https://www.haomeiwen.com/subject/mosqdxtx.html