ES6
es6模式主要有一下限制
1. 变量必须声明后在使用
2. 函数的参数不能有同名属性,否则报错
3. 不能使用with语句
4. 不能对只读属性赋值,否则报错
5. 不能使用前缀 0 表示八进制,否则报错
6. 不能删除不可删除的属性, 否则报错
7. 不能删除变量 delete prop,会报错,只能删除 delete global[prop]
8. eval不会再他的外层作用域引入变量
9. eval和arguments不能重新被赋值
 
 
var声明的变量会挂载在window上,而let和const声明的变量不会:
二、var声明变量存在变量提升,let和const不存在变量提升
三、let和const声明形成块作用域
四、同一作用域下let和const不能声明同名变量,而var可以
五、暂存死区

 

六、const

 

一旦声明必须赋值,不能使用null占位。
声明后不能再修改
如果声明的是复合类型数据,可以修改其属性
常量的含义是指向的对象不能修改, 但是可以改变对象内部的属性







// 为 axios 挂载 全局的请求根路径
axios.defaults.baseURL = '要挂载的地址'
 
findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引,否则返回 -1 
  语法: array.findIndex(callback[,thisArg])
  参数: callback 针对数组中的每个元素,都会执行该回调函数,执行时会自动传入下面三个参数
    element 当前元素   index 当前元素的索引  array 调用findIndex的数组
thisArg 可选 执行callback是作为this对象的值 
作用:
  解决回调地狱的问题
    回调地狱,值的是回调函数中,嵌套回调函数的代码形式,如果嵌套的层级很深,就是回调地狱
    回调地狱 不利于代码的阅读,维护和后期扩展 
Promise 是一个异步操作,分为三种状态:Pending(进行中),Resolved(已完成,又称 Fulfilled)和Rejected(已失败)
特点:
一旦状态改变,就不会再变,任何时候都可以得到这个结果
与事件的区别:事件错过了的话再去监听 是得不到结果的
缺点
1.无法取消Promise 一旦新建 它就会立即执行 无法中途取消
2.如果不设置回调函数,Promise内部抛出的错误,不会反映到外部
3.当处于Pending状态是,无法得知目前进展到哪一阶段(刚开始还是即将完成)
创建形式
const p = new Promise(function(successCb,errorCd){ // 在这个function中定义具体的异步操作 }) 
 
filter()
 
includes()
 
 includes() 方法 是用来判断一个数组是否包含一个指定的值,根据情况,如果包含返回true,不包含返回false 
  注意:对象数组不能使用 includes方法来检测
语法: array.includes(valueToFid[,forIndex]) 
  vlaveToFid 需要查找的元素值
  fromIndex 可选  
    从fromIndex索引开始厂子valueToFid.如果为负数,则按升序从array.length+fromIndex的索引开始搜索(及使从末尾开始往前跳 fromIndex的绝对值个索引,然后往后搜寻)默认为0
 
 for...of  
for...of语句创建一个循环来迭代可迭代的对象, 在ES6中引入for...of循环, 一替代 for...in 和 forEach(), 并支持新的迭代协议, for..of 允许遍历Array(数组)、Strings(字符串)、Maps(映射)、Sets(集合)等可迭代的数据结构等
语法: for(let 自定义名称 of 数组名) { 循环体 }
for( variable of iterable) {
      statement
    }
variable 每个迭代的属性值被分配给该变量
iterable 一个具有枚举属性并且可以迭代的对象
 案例
var arr = [
        { name:'nick', age:18 },
        { name:'freddy', age:24 },
        { name:'mike', age:26 },
        { name:'james', age:34 }
    ];
for(var item of arr){    
    console.log(item.name,item.age);
    }
输出结果:
nick, 18
freddy. 24
mike, 26
james, 34
 
 for(let i 数组名) { 循环体 }
 
 ES6数组去重
Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员),操作方法有:add(value)、delete(value)、has(value)、clear();遍历方法有:keys()、values()、entries()、forEach()
1.ES6----new Set方法
const myArray = [1,1,2,3,2,4,5,6,5,7,8,6]
console.log([...new Set(myArray)]) // 1 2 3 5 6 7 8
2.array.from(该方法可以将set结构转为数组)
 function aaa(array) {
      return Array.from(new Set(array))
    }
    console.log(aaa([1,1,1,2,2,2,3,3,5])) // [1, 2, 3, 5]
 
 
 findIndex() 方法
findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
  • 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 -1
注意: findIndex() 对于空数组,函数是不会执行的。
注意: findIndex() 并没有改变数组的原始值。
 参数:
参数
描述
function(currentValue, index,arr)
必须。数组每个元素需要执行的函数.
函数参数
参数 描述
currentValue 当前元素
index 当前元素的索引
arr 当前元素所属的数组对象
thisValue
可选。 传递给函数的值一般用 "this" 值。
如果这个参数为空, "undefined" 会传递给 "this" 值
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 示例:
const bookArr=[
    { id:1, bookName:"三国演义" },
    { id:2, bookName:"水浒传" },
    { id:3, bookName:"红楼梦" },
    { id:4, bookName:"西游记" }
];
var i=bookArr.findIndex((value)=>value.id==4);
console.log(i);// 3
var i2=bookArr.findIndex((value)=>value.id==100);
console.log(i2);// -1
 
find()方法
该方法主要应用于查找第一个符合条件的数组元素。它的参数是一个回调函数。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素。如果没有符合条件的元素,返回值为undefined。
为true: 找到后立即返回。返回的结果为查找到的元素:
为false: 返回undefined:
 
filter()方法
filter()与find()使用方法也相同。同样都接收三个参数。不同的地方在于返回值。filter()返回的是数组,数组内是所有满足条件的元素,而find()只返回第一个满足条件的元素。如果条件不满足,filter()返回的是一个空数组,而find()返回的是undefined
示例:
var myArr = [1,3,4,5,6,3,7,4];
console.log(myArr.filter((value,index,arr)=>arr.indexOf(value)===index));
//[ 1, 3, 4, 5, 6, 7 ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aaaa
 
 

该方法主要应用于查找第一个符合条件的数组元素。它的参数是一个回调函数。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素。如果没有符合条件的元素,返回值为undefined。