对于es6的自我理解总结
let与const
- 禁止变量重复声明
- 不存在变量提升,在es5里面如果先使用后声明,则一般显示undefined,而es6就会直接报错
- const声明的变量值不可修改
- let用于声明变量,const用于声明常量
- 具有块级作用域属性({}),但是不影响作用域链(就是里面用外面的变量)(var具有函数作用域)
解构赋值
let arr = [1,2,3]
let [a,b,c] = arr
//此时a被赋值为1
let obj = [name:'ahuo',age:18]
let [name,age] = obj
//此时name被赋值为'ahuo'(注意变量名需要与键名相匹配)
箭头函数
()=>{}
简写
- 如果只有一个参数则可省略()
- 如果函数体只有一句语句且为return则可省略{}ra
this指向
- 让this指向当前环境
- List item
剩余参数
let fn = (a,b,...c)=>{
consloe.log(a,b,c)
}
fn(5,9,87,2,3,4,4)
//a,b接收前两个参数,...c接收剩余所有参数,...c只能写在参数位置最后
//未接收到则为空数组
let arr = [5,69,7]
let show = (a,b,c)=>{
consloe.log(a+b+c)
}
show(...arr)
//相当于展开arr
let json = {
a:'a',
b:'b'
}
let json2 = {
..json,
c:'c'
}
console.log(json2)//{a:'a',b:'b',c:'c'}
数组新增方法
map
let arr = [60,59,85,52,22]
let result = arr.map((item)=>{return item>60?'及格':'不及格'})
console.log(result)
//['及格','不及格','及格','不及格','不及格']
//map用于映射,有item和index两个参数
reduce
let arr = [12,45,87,603,4]
let result = arr.reduce((temp,item,index)=>{
if(index == arr.length - 1){
return (temp + item)/arr.length
}else{
return temp + item
}
})
console.log(result);
//temp代表临时值,此时为12,后面依次为return回来的值,没有return则第二次循环就显示undefined
//item表示每一项,第一次即为45
//index表示下标
filter
let arr = [12,45,87,603,4,45,66]
let result = arr.filter((item)=>{
if(item%2 == 0){
return true
}else{
return false
}
})
console.log(result);
//filter用于筛选,反对若是true则会被筛选出来,反之false就不会
//具有index,item两个参数
forEach
let arr = [12,45,87,603,4,45,66]
arr.forEach((item,index)=>{
console.log(`第${index} 个为${item}`);
})
//forEach更偏向于单纯的循环
//具有item,index两个参数
es6字母串模板
alert(`我giao ${变量名} 我giao`}
Json
Json标准格式
let json = {"a":"a","name":"ahuo"}
//键必须要用双引号包裹,js中可以省略
//值为字符串必须双引号包括,其他语音单双引号语义不同,js中可以用单引号
Json转换
JSON.steingify({a:12,b:5}) → '{"a":12,"b":5}'
//JSON对象的格式转换为JSON格式字符串
JSON.parse('{"a":12,"b":5}') → {a:12,b:5}
//JSON格式字符串转化为JSON对象的格式