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