ES5和ES6

96 阅读6分钟

ES5和ES6 ES5和ES6

严格模式概述

严格模式对于相关的代码进行规范,不符合规范直接报错,剔除了一些影响性能的操作,提升了效率。 我们普通书写代码的模式叫做怪异模式。怪异模式和严格模式比较来说严格模式的效率远远高于怪异模 式。严格模式未被所有浏览器接受(ie低版本不接受)。但是总体来说已经被纳入了规范。

严格模式的特点

  • 声明必须使用var关键词
  • 不能使用8进制
  • 不允许删除不能删除的属性
  • 不能在非上下文中声明函数
  • 函数中的this不能指向global对象
  • 形参名不能重复

数组的高阶函数有

  • foreach
  • map
  • reduce
  • reduceRight
  • filter
  • some
  • every
forEach 遍历内容进行操作
  • forEach 遍历 没有返回值
  • 里面传入的函数 有三个参数 分别为 值 下标 当前数组
map 遍历内容返回数组
  • map 遍历 有返回值 (数组长度一定等于当前的数组长度)
  • 里面传入的函数 有三个参数 分别为 值 下标 当前数组
  • map返回的值是接收每次传入的函数的返回值
reduce 对于数组进行计算
  • reduce也是一个高阶函数 它接收俩个参数 第一个参数为函数 第二个参数为初始值
  • 只传递一个参数 传递一个函数 这个函数有四个参数 分别为 上一次的结果 当前遍历的值 当前遍历
  • 的下标 当前的数组
  • 只传递一个参数的情况下 下标默认从1开始 第一次的时候上一个的结果为第一个的值
  • 后面的上一次的结果为上一个函数执行返回的结果
  • 返回值可以为任意类型
reduceRight 从右到左进行计算
some 有一个满足返回true
  • some只要数组里面存在满足对应的传入的函数中返回的条件的就返回true
  • 传入的函数里面的参数为3个 分别是 值 下标 当前的数组
every 所有都满足返回true
  • every 要所有的都满足才返回true
  • 传入的函数里面的参数为3个 分别是 值 下标 当前的数组
filter 返回满足条件的数组
  • filter返回的是数组
  • 根据传入的函数的返回值来进行相关的操作 返回值为true会加到返回的数组里面去 为false不加入
  • 三个参数 值 下标 当前的数组
字符串模板
//${} 可以书写js语句
var str = `
${1+2}hello world\`
console.log(str) //3hello world
this指向更改的方法(函数对象的方法)
  • bind 返回一个函数(手动执行)bind 柯里化函数
  • call 返回函数指向的结果 (自动执行) call传递参数 传递多个参数
  • apply 返回函数指向的结果 (自动执行)apply传递参数 传递一个参数为数组
  • 注意:bind返回的函数不能再使用call或者apply来更改this指向
* 新增静态方法
  • Array.isArray 判断当前是否是一个数组
  • Number.isInteger 判断是否为整数 不会发生转换
  • Number.isNaN 没有强制转换 除传入的是NaN 其他情况返回的都是false
  • Object.keys 获取对象中所有的键返回一个数组
  • Object.values 获取对象中所有的值返回一个数组
  • Object.entries 获取对象中所有的键值对返回一个数组(二维数组)
  • Object.is 相当于恒等 可以识别NaN
  • 注意:isNaN 强制转换的操作 里面的数据全部转为number 如果不能转换返回true Number.isNaN 没有强制转换 除了传入的是NaN 其他情况返回的都是false

ES6概述

字符串新增方法

  • endsWith 是否结尾 传入一个字符串 返回boolean类型的值
  • startsWith 是否开头 传入一个字符串 返回boolean类型的值
  • includes 是否包含 传入一个字符串 返回boolean类型的值
  • repeat 平铺 传入一个number类型的次数值 返回对应的字符串

数组新增方法

  • find 查找对应满足条件的第一个元素 find是一个高阶函数里面传入的函数有三个参数分别为 值 下标 当前数组
  • findIndex 查找对应满足条件的元素的第一个下标 findIndex是一个高阶函数里面传入的函数有三个参数分别为 值 下标 当前数组
  • Array.from 将对应的伪数组转为数组返回一个新的数组
  • Array.of 将传入的内容填充到一个新数组中并返回 返回这个新数组
  • includes 是否包含
  • flat 数组扁平化 根据传入的层级(number)来进行扁平化操作

对象相关新增

对象的简写

  • 在对象中的属性如果属性值为变量 且变量名和键相同时可以省略对应的值
  • 在对象中函数可以省略对应的:function 直接使用函数名(){} 声明

对象的解构赋值

  • 对象中通过{} 来进行解构 通过key来得到值
  • 数组通过[] 来进行解构 通过位置来得到值

新增的变量声明关键词

  • 变量声明 let 修饰的变量不会预编译 修饰的变量不允许在一块内重新声明 他是块级作用域变量 随着上下文的销毁而销毁
  • var 修饰的变量会进行预编译 var关键词允许重复声明 导致数据的污染 var关键词修饰的是伪全局变量 它会随着全局对象的销毁而销毁
  • 常量声明const 声明块级作用域常量 不允许重复声明 声明必须赋值

新增基础值类型

原本的值类型

String 、 Number 、Boolean 、null 、undefined

新增值类型

  • Symbol 独一无二的值 (机器码) 一般用于对象的key 这个属性一般不允许访问和设置 用于最初的构建
  • BigInt 大整型 他是为了容纳超出对应的最大值的整型数值

函数新增

  • 默认参数 给参数进行赋值操作来指定默认值
  • 箭头函数
基础使用

var fn = ()=>{}

箭头函数特性

  • 没有this
  • 没有arguments
  • 没有构造器 construct 不能被new
可以简化的操作
  • 如果参数有且只有一个 可以省略()
  • 如果内部的代码块只有一行 可以省略{}
  • 如果内部代码块只有一行且需要return内容 那么可以省略{} 及 return

class

新增class关键词 主要用于修饰类(类是用于构建对象的))

基础用法
//class是一个代码块
class 类名{
    //构造函数
    constructor(参数,参数....){
        相关内容
    }
}
  • promise是一个类,它是用于解决异步执行问题将异步代码同步执行。
  • proxy是一个类,它是用于代理的一个类。主要是对于对象进行代理。
  • generator函数 主要是做对应的执行控制

for in (遍历对象) for of (遍历数组)

for in 遍历是对象的key (数组也是对象)
for of 遍历的是数组的值