js : 检测数据四种方法-函数的定义和调用-数组常用的方法
2017-07-11 本文已影响0人
Dream_丹丹
检测数据类型的四种方法
方法 | 作用 |
---|---|
typeof | 主要用来检测基本数据类型,无法检测出具体的引用数据类型 |
constructor | 属于构造函数,可以检测出调用constructor这个函数对象具体属于哪个类 |
instanceof | 检测对象是否属于某个类,若果属于返回true,否则返回false |
Object.prototype.toString.call | 打印出对象的具体信息 |
函数的基础知识
- 函数由两部分构成
- 函数定义阶段
- 函数调用阶段
- 函数只定义,不调用,什么都不会发生
函数定义的3个步骤
- 开辟一个内存空间,并给这个空间一个名字
- 把函数体内的js代码以字符串的形式存入这个空间
- 将空间地址赋值给函数名
函数调用的2个步骤
- 函数调用的时候形成一个私有作用域
- 把空间内的字符串,作为js代码执行
函数的返回值
- 返回值 : return
- undefined 出现的情况:
- 没有写return
- 写了return,但是没有返回值
- 获取对象的某个值不存在时,拿到的值为undefined
- 定义了形参,没有传实参,拿到的是undefined
- argument.callee 拿到的是函数体本身
- 函数包含 有名函数 和 匿名函数
- 匿名函数:给对象的某个属性添加函数表达式
- 匿名函数:函数自己调用自己
闭包
- 函数调用的时候,会形成一个私有作用域,保护里面的变量不受外界的干扰,函数的这种保护机制,叫做闭包
- 子函数可以调用父级函数的私有变量
数组常用的方法
名称 | 作用 | 参数 | 返回值 | 是否改变原数组 |
---|---|---|---|---|
push | 给数组末尾增加一个或多个 | 一个或多个 | 返回数组的长度 | 改变原数组 |
pop | 从数组末尾删除一个 | 无 | 返回删除的内容 | 改变原数组 |
unshift | 给数组的头部增加一个或多个 | 一个或多个 | 返回数组的长度 | 改变原数组 |
shift | 从数组的头部删除一项 | 无 | 返回被删除的内容 | 改变原数组 |
splice | 从索引n开始,后面全部删除 | 一个参数 | 被删除的内容以一个新数组的形式返回 | 改变原数组 |
splice | 从索引n开始,删除几个 | 两个参数 | 被删除的内容以一个新数组的形式返回 | 改变原数组 |
splice | 从索引n开始,增加几个 | 三个以上,第二个为零 | 无 | 改变原数组 |
splice | 从索引n开始,将某些替换 | 三个以上,第二个不为零 | 无 | 改变原数组 |
slice | 从第n个开始,克隆m项,包前不包尾 | 两个 | 被克隆的内容以数组的形式返回 | 原数组不变 |
slice | 全部克隆 | 0 或者 没有 | 被克隆内容以一个数组的形式返回 | 原数组不变 |
concat | 拼接数组 | 多个 | 返回拼接后的数组 | 原数组不变 |
concat | 克隆数组 | 无 | 返回克隆后的数组 | 原数组不变 |
reverse | 翻转数组 | 无 | 返回翻转后的数组 | 改变原数组 |
sort | 数组排序 | 一个匿名函数 | 返回排序后的数组 | 改变原数组 |
toString | 将数组转换成字符串 | 无 | 返回转换后的字符串 | 不改变原数组 |
join | 将数组某个连接符转换为字符串 | 连接符 | 返回转换后的字符 | 不改变原数组 |
indexof | 查找对象中是否有某一个元素 | 要查找的元素 | 有返回元素所在索引,无返回-1 | 不改变原数组 |
forEach | 遍历/循环数组的每一项 | 两个 | 无 | 不改变原数组 |
map | 遍历/循环数组的每一项 | 两个 | 数组有几个,有几个返回值 | 不改变原数组 |