作用域链:先在最小环境内查找有无想要的变量对象,如果有则使用本函数环境内的变量对象(要是在申明变量对象前调用则是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个名字相同的函数,该名字只属于后定义的函数。
- 使用不带()的函数名是访问函数指针,而非调用函数。
来源:CSDN
作者:a la
链接:https://blog.csdn.net/alaAicy/article/details/104123267