十四、ES5

92 阅读3分钟

1. ES5的严格模式

1.1 为什么要使用严格模式?

    1. 消除Javascript语法的一些不合理、不严谨之处,减少怪异行为;
    1. 代码运行的一些不安全之处,保证代码运行的安全
    1. 提高编译器效率,增加运行速度

1.2 严格模式的使用方式

script标签最前面添加代码 "use strict";

1.3 严格模式的注意事项

  1. 声明变量必须使用关键字(var,let,const)
  2. "use strict"; 前面不能有其他的代码
  3. 禁止使用八进制
  4. 禁止函数内部的this指向全局变量window,而是undefined
  5. 不允许在非函数的代码块内声明函数
  6. 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函数的实参,是一个数组

QQ图片20230411203221.png

【补充: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()方法的数组
  • 返回值:返回最终的累加值