执行环境(作用域)
每个执行环境都有一个与之关联的变量对象
,环境中定义的所有变量和函数都保存在这个对象中。
在WEB浏览器中,全局作用域被认为是window对象。
每个函数有自己的作用域。
非全局的执行环境(局部作用域)的代码块执行完毕后,该环境及保存在该环境的所有变量和函数也随之销毁。
全局执行环境直到关闭网页或浏览器时才销毁。
作用域链
当代码在一个环境中执行时,会创建变量对象的一个作用域链,它保证了当前执行环境对符合访问权限的变量和函数的有序访问。
var a = 1;
function outer() {
var b = 2;
function inner() {
var c = 3;
console.log(b);
//可以访问a, b, c
//函数inner()的作用链包含三个对象,自己的变量对象,outer()函数的变量对象和全局的变量对象
//inner()的局部环境开始时会在自己的变量对象中搜索变量和函数名,如果搜不到则再搜索上一级作用域
//在搜索过程中,如果存在一个局部变量的定义,则搜索自动停止
}
inner();
}
outer();
splice()
方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
indexOf()和lastIndexOf()
indexOf()从数组的开头开始查找
lastIndexOf()从数组的末尾开始向前查找
返回查找项在数组中的位置,查找时比较采用严格相等
数组的迭代方法
callback[, thisArg]
每个方法都接受两个参数,1、每个元素执行一次 callback 函数2、运行该函数的作用域对象
callback 被调用时传入三个参数:元素值,元素的索引,原数组。
every()
方法测试数组的所有元素是否都通过了指定函数的测试。
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
forEach()
方法对数组的每个元素执行一次提供的函数。
map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
some()
方法测试数组中的某些元素是否通过由提供的函数实现的测试。与every()
的区别,every()每一项都返回true,这个方法才返回true。some()
只要一项返回true,就会返回true。