ES5
一、ES5的新增
-
什么是ES5,ECMAScript5
-
ES的版本更新,向下兼容,老版本并没有全部废弃,新版本只是在老版本的基础上新增
1. 严格模式
-
严格模式:更严格的开发模式
-
js的代码规范非常不严格,所以严格模式的意义是:
-
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
-
消除代码运行的一些不安全之处,保证代码运行的安全;
-
提高编译器效率,增加运行速度;
-
为未来新版本的Javascript做好铺垫
-
-
严格模式的开启方式
-
在作用域开始的位置,加上一行字符串:"use strict";
-
局部严格
-
安全,但不方便,麻烦
-
-
全局严格
-
不安全
-
-
配合匿名函数
-
利用父子作用域,本质是局部,但实现了全局的方便
-
-
-
-
严格模式开启之后的变更
-
声明变量必须加关键字(var)
-
不允许参数名重复
-
没有明确隶属对象的函数中的this(执行了)指向undefined
-
arguments的内容不会被形参的改变而影响
-
arguments.callee被禁止使用
-
-
-
记忆性知识点,改了就改了,没有商量的余地
2. 新增了一些数组的方法
-
功能:
-
参数:
-
返回值:
-
是否改变原数组:
-
arr.indexOf()
-
arr.forEach()
-
arr.map()
-
arr.filter()
-
arr.some()
-
arr.every()
-
arr.reduce()
-
arr.reduceRight()
-
var arr = ["hello",3,4,5,6,"world"];
console.log(arr)// indexOf
// 功能:返回指定数据所在的索引,没有,-1
// 参数:1要查找的数据,2其实位置,可选
// 返回值:索引或-1
// 是否修改原数据:否
// var res = arr.indexOf(5);
// var res = arr.indexOf(5,3);
// var res = arr.indexOf("a");
// console.log(res);// forEach
// 功能:遍历数组
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:undefined
// 是否修改原数据:否
// var res = arr.forEach(function(val,idx,self){
// console.log(val,idx,self);
// })
// console.log(res);// map
// 功能:1遍历数组,2修改数据
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值
// 是否修改原数据:否
// var res = arr.map(function(val,idx,self){
// console.log(val,idx,self);
// return val *= 1.3;
// })
// console.log(res);// filter
// 功能:1遍历数组,2过滤数据
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值,为true时的值
// 是否修改原数据:否
// var res = arr.filter(function(val,idx,self){
// console.log(val,idx,self);
// return typeof val === "number";
// })
// console.log(res);// some
// 功能:1遍历数组,2检测所有数据(只要有一个返回true,就是true,同时停止遍历)
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:布尔值,遍历数组中数据时,只要有一个返回true,就是true,同时停止遍历
// 是否修改原数据:否
// var res = arr.some(function(val,idx,self){
// console.log(val,idx,self);
// return val === 4;
// })
// console.log(res);// every
// 功能:1遍历数组,2检测所有数据(必须所有返回true,才是true)
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:布尔值,遍历数组中数据时,必须所有返回true,才是true,只要有一个false,就是false,停止遍历
// 是否修改原数据:否
// var res = arr.every(function(val,idx,self){
// console.log(val,idx,self);
// return true;
// })
// console.log(res);// reduce
// 功能:1遍历数组,2归并
// 参数:
// 1.函数,这个函数自带四个形参,1上一个值,2数据,3索引,4数组自身
// 2.指定默认情况下 的 上一个值↑;如果没有指定,上一个值,默认找数组的第一个数据
// 返回值:最后一个遍历的返回值
// 是否修改原数据:否
// var res = arr.reduce(function(prev,val,idx,self){
// console.log(prev,val,idx,self);
// return "返回给了下次执行时的prev";
// },"prev的默认值,如果没有,prev找数组的第一个数据")
// console.log(res);// 案例:利用reduce实现数组中所有数据的累加
var arr = [2,3,4,5,6,7];
var res = arr.reduce(function(prev,val,idx,self){
return prev + val;
})
console.log(res);
-
-
浙公网安备 33010602011771号