1. ES5的严格模式
1.1 为什么要使用严格模式?
-
- 消除Javascript语法的一些不合理、不严谨之处,减少怪异行为;
-
- 代码运行的一些不安全之处,保证代码运行的安全;
-
- 提高编译器效率,增加运行速度;
1.2 严格模式的使用方式
script标签最前面添加代码 "use strict";
1.3 严格模式的注意事项
- 声明变量必须使用关键字(var,let,const)
"use strict";前面不能有其他的代码- 禁止使用八进制
- 禁止函数内部的this指向全局变量window,而是undefined
- 不允许在非函数的代码块内声明函数
- arguments和形参不同步
2. ES5改变函数this指向的方法
2.1 fn.bind(参数1,参数2...)();
- 参数1:this指向的对象
- 参数2-n:fn函数的实参 【注意】不会立即执行,调用函数时要加小括号
2.2 fn.call(参数1,参数2...); ---> 立即执行
- 参数1:this指向的对象
- 参数2-n:fn函数的实参
2.3 fn.apply(参数1,参数2); ---> 立即执行
- 参数1:this指向的对象
- 参数2-n:fn函数的实参,是一个数组
【补充:this指向】
- ① 事件绑定的函数里的this,指向当前的事件绑定源。
- ② 对象的方法里面的this,指向当前对象。
- ③ 函数里面的this,默认指向Window。但是在ES5严格模式下,不允许指向Window,而是undefined
- ④ 定时器延时器里面的this,指向Window。
- ⑤ 箭头函数里的this指向上下文对象
- ⑥ new操作符改变this的指向,指向实例对象。原本默认指向Window
- ⑦ ES5中的bind,call,apply改变this指向,但是不能改变箭头函数的this指向。
- ⑧ 谁调用了原型方法,this指向谁。
3. ES5数组增强 ---> 增加了一些数组的方法
3.1 indexOf(查找的元素,查找的开始位置)
- 作用:判断数组中是否包含某个元素。
- 参数:第2个参数不写默认从0查找
- 返回值:找到返回下标,找不到返回-1。
3.2 forEach(回调函数) ---> 高阶函数。。
- 作用:用来遍历(不能打断)
- 参数:回调函数
- 返回值:无
3.3 map(回调函数) ---> 高阶函数。
- 作用:用来遍历
- 参数:回调函数
- 返回值:返回一个数组
3.4 filter(回调函数) ---> 高阶函数。
- 作用:过滤掉一些不符合条件的元素
- 参数:回调函数
- 返回值:返回符合条件的元素组成的新数组
3.5 reduce(回调函数,初始值) ---> 高阶函数。
-
作用:累加器,可以用来拼接页面结构。
-
参数:function(pre,cur,index,arr){}。初始值是pre的初始值
- pre:上一次调用回调函数时的返回值,或者初始值
- cur:当前的元素
- index:当前元素的下标。如果没有初始值,pre为arr[0],cur从下标1开始循环
- arr:调用reduce()方法的数组
-
返回值:返回最终的累加值