回调、递归、数组

return

return 语句会终止函数的执行并返回函数的值。

return 是javascript里函数返回值的关键字,

如果return 后没有内容或者没有return ,返回一个undefined

函数返回的作用
  • 1、返回局部变量
  • 2、返回参数
  • 3、跳出,切断,阻止后续代码执行

回调

  • 将一个函数以参数的形式传入到另一个函数中, 并且在那个函数执行

  • 函数内执行当前自身函数

  • 回调函数的机制
    ⑴定义一个回调函数;
    ⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;
    ⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

用途

  • 1.回调一般用于当处理某件事情需要等待时,设置回调
  • 2.当不需要关心具体后续需要处理的事情,设置回调
  • 3.回调可用于通知机制。
  • 回调函数完成循环,局部传参,返回值

递归

  • 递归条件
    (1)须有完成函数任务的语句。
    (2)—个确定是否能避免递归调用的测试
    (3)一个递归调用语句。
    (4)先测试,后递归调用。

  • 递归评价

    1.递归的目的是简化程序设计,使程序易读。

    2.递归增加了系统开销。 时间上, 执行调用与返回的额外工作要占用CPU时间。空间上,随着每递归一次,栈内存就多占用一截。  相应的非递归函数虽然效率高,但却比较难编程,而且相对来说可读性差。
     3.现代程序设计的目标主要是可读性好。随着计算机硬件性能的不断提高,程序在更多的场合优先考虑可读而不是高效,所以,不鼓励用递归函数实现程序思想。
    4.根据内存大小设置递归上限的次数, 如果递归次数太多, 就会堆栈上限溢出

setTimeout

  • 超时函数,时间间隔函数
  • 格式:setTimeout(超时执行的函数,超时时间,执行函数的参数)
  • 超时函数是异步的,在一定时间间隔后处理问题
  • clearTimeout();清除超时函数

数组

数组的创建

  • 1.字面量创建

    • var arr = []//空数组

    • var arr = [1, 2, 3];

    • arr[3]=20;

      //arr[3]下标变量 3就是下标 20就是元素arr是数组

  • 2.构造函数创造法

    如果构造函数创建数组时,仅有一个参数且这个参数是一个大于等于0的正整数,这个数就是这个新数组的长度, 这个参数就是数组的长度 并且没有元素。如果是负数或者小数就会报错。如果是非数值类型,就会将这个元素放在数组的第一位
    new Array();
    new Array(size);
    new Array(element0, element1, …, elementn);


 var arr = new Array[5];
 var arr = new Array(4, 5, 6, 7, 8, 9, 10);
 var arr = new Array["a"];

  • 3.对象创建法

    var arr=new Object([])

 var arr = new object([1, 2, 3, 4]);
	- console.log(typeof arr); //object
	- console.log(arr.constructor === Array);
	- console, console.log(Array.isArray(arr)); //仅限ES6以后支持
	- console.log(String(arr) !== "[object object]");

数组的属性

length 设置或返回数组中元素的数目。
length也是可以设置的,如果设置为0,表示清空数组,如果设置为3,表示保留到第三位

数组的定义

  • 有序列表存储若干无数元素,紧密型结构
  • 将元素放在列表中的第几位,从0开始计算,这个位置就是下标,又叫做索引值
  • 元素被存储在列表中这个数据就是元素,简称元
  • 从列表中获取这个元素的方法,使用数组名[下标]就可以得到这个元素。把这种方式叫做下标变量
  • 数组是弱类型列表,要把相同类型的元素存储在一起
  • 数组是引用类型,引用地址赋值
  • 数组在强转或者隐式转换成字符串时,都会转换为数组元素的
  • 因为js是弱类型语言,因此数组比较随意,可以任意扩张,不需要限定它的长度,也无法限定长度

数组和对象

  • 对象

    • 对象是一种松散型结构,对象是键值对存储。当删除一个元素时,对象的其他值不会发生变化,对象是没有元素的个数,也就是对象长度,对象中不知道存储了多少个元素,插入和删除不会影响其他数据,所以时间复杂度极低,因为通过key去一一对应存储一个值,所以获取时,只需要根据key去取值就可以了,所以时间复杂度极低。对象每个数据都是独立存在,不存在关联关系,更不能排序,所以不找因关联关系找到对应的值
  • 数组

    • 数组是紧密型结构,只用下标存储对应的值,当删除一个元素时,因为紧密解构的关系,就会将后面的元素向前递进,数组是有长度,数组中可以知道存储了多少元素,因为插入和删除都会影响数组的元素
      的位置和解构,因此插入和删除都会影响数组的运行效率,时间复杂度较高。 数组的存储是依靠下标的,所以如果需要查找一个值,就需要遍历数组的每个元素,已到达找到目标元素,因此时间复杂度也是极高的。数组在使用 时,因为是紧密性解构,我们可以根据上一个内容找到与其相关联的其他元素
      // 例如我们可以利用数组排序,找一个最小值,还可以迅速找第二位最小值。
  • 数组是对象

XMind - Trial Version

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值