ES5基础

拥有回忆 提交于 2020-02-04 05:37:43

作用域链:先在最小环境内查找有无想要的变量对象,如果有则使用本函数环境内的变量对象(要是在申明变量对象前调用则是undefind),如果没有则到更大一级的环境中查找,一直延续到全局环境。

引用类型

1.Object 对象

  • var person = { } ; // 与 new object() 相同。
  • for-in:枚举对象“键名”,但是无序的。

2.Array 数组

  • var names=[ ];//创建一个新的数组
  • 数组的每一项可以保存任何数据类型的数据
  • .join():只接受一个参数,这个参数将作为该数组每个元素之间的分隔符,返回包含所有数组项的字符串。(不会改变原数组)
var arr = [1,2,3]
arr.join() // "1,2,3" 如果不含参数,默认为逗号。
arr.join("_") // "1_2_3" 
  • 栈方法
    1.push():入栈,可以接收任意数量的参数,把它们逐个添加到数组末尾(栈顶),返回修改后的数组长度。
    2.pop():出栈。从数组末尾(栈顶)移除最后一项,减少数组的length,返回移除的项。

  • 队列方法
    1.shift():出队。移除数组的第一项并返回该项,长度减1。
    2.unshift():数组头部添加任意个项,并返回新数组的长度。

  • 排序
    1.reverse():反转数组中元素的顺序。(会改变原数组
    2.sort():按ASCII码从小到大排序。(会改变原数组

  • 操作方法
    1.concat():合并。基于当前数组中的所有项创建一个新数组。(不会改变原数组

var arr = [1, 2, 3]
arr.concat([10, 11], 13) // [1,2,3,10,11,13] 一维数组会被拉平。
arr.concat([1, [2, 3]]) // [1,2,3,1,[2,3]] 二维数组只会拉平一次。

2.slice(1,4):提取。(不会改变原数组
第1个参数:以 从指定位置 到 末尾 的所有项创建一个新数组。
第2个参数:以原数组的 第1(从0开始)到 第3 项创建一个新数组。(左闭右开区间

           0  1  2  3  4
var arr = [1, 2, 3, 4, 5]
arr.slice(2) // [3,4,5] 从第2项到最后。
arr.slice(1, 3) // [2,3] 从第1项到第2项(左闭右开区间)
arr.slice(1, -1) // [2,3,4]

3.splice():插入/删除。向数组中部插入项。(返回 被删除的项组成的数组 或 空数组)(会改变原数组)
删除:2个参数。起始位置,要删除的项数
插入:3个参数。起始位置,0(要删除的项数),要插入的项(可以任意多个)
替换:3个参数。起始位置,1或其它(非0,删除指定项数),要插入的项

  • 遍历方法
    1.every(function (value) { return … }):判断数组中每一项是否符合规则,返回true/false。
var arr= [1, 2, 3, 4, 5]
arr.every(function (value) {
    return value < 10 // true
})

2.some(function (value) { return … }):判断数组中某一项是否符合规则,返回true/false。
3.filter(function (value, index) { return … }):返回符合过滤规则的数组。(不会改变原数组

var arr= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr.filter(funcion (value, index) {
    return index%2 === 0 || value >= 8 // 返回索引为偶数的项 或 值大于等于8的项。(根据布尔值返回)
})

4.for-of:遍历所有数据结构的统一方法。支持数组、大多数类数组对象,例如DOM NodeList对象。也支持字符串遍历。(es6)
5.forEach(function (value, index, array) { … }):调用数组的每个元素,并将元素传递给回调函数。(不会改变原数组
6.map( function(value, index, array) { … } ):映射,返回处理value后的新数组。(不会改变原数组

// 原数组有几项,新数组就有几项,不能做到“筛选”
let arr=[2,3,4]
let newArr = arr.map( (value)=>{
   return  value*2
})
newArr // [4,6,8]

3.Function

  • 每一个函数都是Function类型的实例。
  • 函数名 是指向函数对象的 指针,所以一个函数可以有多个函数名(指向同一个地址)。
  • 没有重载,如果定义了2个名字相同的函数,该名字只属于后定义的函数。
  • 使用不带()的函数名是访问函数指针,而非调用函数。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!