一、ES5的新增
- ES5:ECMAScript5
- 在ES5中,新增了一种编写代码的模式,严格模式
- 为了消除代码中不合理,不严谨,隐患之处
- 体现了更好的发展方向
- 提升了代码的执行效率
- 如何开启
- 在作用域的第一行放置字符串:“use strict”
- 当前作用域就是严格模式,需要遵守严格模式的开发规范书写代码
- 配合匿名函数,开启伪全局严格模式
- 严格模式开启之后的变更
- 变量必须先声明,再使用
- 函数的形参不允许重复
- 函数的arguments保存的实参,不会受到形参的改变而影响
- 函数的arguments不允许使用callee(非严格模式下arguments.callee是函数自身)
- 没有明确隶属对象的函数中的this,不指向window,指向undefined
- 0开头的八进制被禁止
- with语句被禁止使用
- 数组的排序
var arr =[5,4,3,2,1];
for(var i=0;i<arr.length-1;i++){
for(var j=0;j<arr.length-(1+i);j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
console.log(arr);
- 选择排序
- 拿到数组的每一个数据,从左向右,依次使用每一个数据,和后面所有数据相比较,得到最小的交换
var arr = [1,3,5,4,2];
for(var i =0;i<arr.length-1;i++){
var min = arr[i];
var minIndex = i;
for(var j=i+1;j<arr.length;j++){
if(min > arr[j]){
min = arr[j];
minIndex = j;
}
}
arr[minIndex] = arr[i];
arr[i] = min;
}
console.log(arr);
方法 | 功能 | 参数 | 返回值 | 是否改变原数据 |
---|
indexOf() | 检测数组中第一次出现这个元素的位置(索引) | 参数1,要查找的元素,参数2,从第几个开始查 | 有就返回相应的索引,没有就返回-1 | 否 |
forEach() | 遍历数组 | 函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身 | 无或undefined | 否 |
map() | 遍历数组,可以返回新数组 | 函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身 | 新数组,保存了回调函数每次执行时的返回数据 | 否 |
filter() | 遍历数组,可以过滤数据(返回新数组) | 函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身,该函数可以有返回值,返回布尔值 | 新数组,保存了回调函数每次执行时返回true时的数组的数据 | 否 |
some() | 遍历数组 ,根据条件查询,得到布尔值,只要出现一次true,最终结果就是true | 函数,该函数又拥有三个参数,第一个:数据,第二个,索引,第三个,数组自身,返回布尔值 | 作为参数的函数的返回值中是否出现了true,只要出现了true,结果就是true | 否 |
every() | 遍历数组,根据条件查询,得到布尔值,全部为true,最终结果才是true | 作为参数的函数的返回值中全部是true,结果才是true | 布尔值 | 否 |
reduce() | 遍历数组,归并,对于空数组是不会执行回调函数的 | 函数,有4个参数,第一个:第一遍执行时,reduce()的第二个参数或数组的第一个数据。执行之后,是之前执行时的返回值,第二个:数组的数据,第三个,索引,第四个:自身 | 是回调函数最后一次执行时的返回值 | 否 |
var arr = [3,2,5];
var res = arr.reduce(function(prev,now,indx,arr){
console.log(prew);
return prev + now;
},0);