let与const
- ES6新增的两种变量声明的方式
- ES5中只能使用var来声明
let/const与var的差异
1.let/const声明的变量不允许出现重复的
- 使用var声明的变量出现重复时,后一个值会覆盖前一个值;
- let/const不允许出现重复变量;
2.let/const声明的变量没有变量提升
- var声明的变量当出现变量提升时,值为undefined;
- let/const不允许,会报错;
3.let/const声明的变量,会受限于所有的{}
- 使用var声明的变量只会受限于函数内部,即为在函数中循环中也可以调用;
- 使用let/const声明的变量是块级作用域;
==关于let和const的补充:==
- let声明的变量后续可以修改内部的值,而const则不行,因为const一般用来声明==常量==;
- 因为let声明的变量可以修改,故第一次声明时可以不赋值;但是const因为不能修改,所以首次必须赋值,且一般用作数组或对象的声明;
箭头函数
- 可以看作是对ES5普通函数的写法上的一个优化
写法:普通写法: (书写形参)=>{书写函数调用时执行的代码}
箭头函数的优化
1.箭头函数如果只有一个形参的时候,可以不写小括号(除此之外,必写)
2.如果箭头函数的函数体只有一行代码,那么可以省略大括号(并且默认将这行代码return)
箭头函数与普通函数的区别
- 1.箭头函数内部没有this,所以他的this取决于书写的时候;
- 2.箭头函数内部没有arguments;
解构赋值
快速从数组或对象中取出成员的一种语法
解构数组
ES5拿到数组所有成员的方法
var num1 = arr[0]
var num2 = arr[1]
var num3 = arr[2]
console.log(num1, num2, num3)
ES6数组解构赋值
let [num1, num2, num3] = arr
console.log(num1, num2, num3)
ES5拿到对象所有成员的方法
var obj1 = obj.a
var obj2 = obj.b
var obj3 = obj.c
console.log(obj1, obj2, obj3)
ES6对象解构赋值
let { a, b, c } = obj
console.log(a, b, c)
Set与Map
ES6新推出的两种数据
Set
类似于数组的一种数据结构,内部按照索引排序(但是不能通过索引取值),天生不支持重复数据
语法:let s=new Set([数据1,数据2,数据3])
方法:
-
1.size:
作用:获取到当前数据结构中的数据的数量
console.log(s.size) -
2.add:
作用:向当前数据新增数据结构中新增数据
console.log('add 后的数据结构', s) -
3.has:
作用:查询当前数据结构中是否拥有该数据结构;找到的时候返回true,否则返回false
console.log(s.has(100) -
4.delete:
作用:删除当前数据结构中指定数据
s.delete(5) -
5.clear:
作用:清空当前数据结构
console.log('清空后的数据结构 ', s) -
6.forEach
s.forEach(function (item, key, origin) {
// set 数据结构是没有 key 所以 item 和 key 打印出来的值都一样
console.log(item, key, origin)
})
Map
和Set一样,也不支持重复数据,类似于对象的一种数据结构,但不同之处在于,map的key可以是任意值。
语法:var m=new Map([key,value])
方法:
-
1.set()
作用:向当前数据结构中新增数据
m.set('newKey', [1, 2, 3, 4, 5]) -
2.get()
作用:获取到指定key对应的value值
console.log(m.get('newKey')) -
3.forEach:
m.forEach(function (item, key, origin) {
/**
* item: 对应的 value
* key: 对应的 key
* origin: 对应的原始数据结构
*/
console.log(item, key, origin)
})