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 遍历的是数组的值