一、新增let和const
关键字 | 块级作用域 | 变量声明提升 | 初始值 |
---|---|---|---|
var | Y | Y | - |
let | X | X | |
const | X | Y | 必须有 |
二、新增箭头函数
//普通函数
var fn1 = function (param) {
return param++;
}
// 箭头函数
let fn2 = (param) => {
return param++;
}
三、新增 '扩展运算符 ’ 和 ‘解构’ 操作
扩展运算符
…会把数组中的每一项展开,分别赋值给等号前面的变量
var arr = [1,2,3]
var [a,b,c] = [...arr]
console.log(a,b,c);//1 2 3
1.数组解构
var arr = [1,2,3]
var [a,b,c] = [...arr]
console.log(a,b,c);//1 2 3
2.对象解构
var obj = {
name:'wangwu',
age:13
}
// 将obj的name赋值给name2
var {name:name2,age:age2} = obj
console.log(name2);//wangwu
// 将obj的age赋值给age2
console.log(age2);//13
四、新增对象Set(类似于数组)
数据结构 Set。它类似于数组,但是一个元素只能出现一次。
Set本身是一个构造函数,用来生成 Set 数据结构。
Set的特点就是该对象里面的元素不会有重复,常用于去重
使用:
let mySet = new Set();
mySet.add(1); // Set [ 1 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add("some text"); // Set [ 1, 5, "some text" ]
let o = {a: 1, b: 2};
mySet.add(o);
mySet.add({a: 1, b: 2}); // o 指向的是不同的对象,所以没问题
mySet.has(1); // true
mySet.has(3); // false
mySet.has(5); // true
mySet.has(Math.sqrt(25)); // true
mySet.has("Some Text".toLowerCase()); // true
mySet.has(o); // true
mySet.size; // 5
mySet.delete(5); // true, 从set中移除5
mySet.has(5); // false, 5已经被移除
mySet.size; // 4, 刚刚移除一个值
console.log(mySet);
// logs Set(4) [ 1, "some text", {…}, {…} ] in Firefox
// logs Set(4) { 1, "some text", {…}, {…} } in Chrome
Set的方法
方法名 | 描述 |
---|---|
add(value) | 添加某个值,返回 Set 结构本身。 |
delete(value) | 删除某个值,返回一个布尔值,表示删除是否成功。 |
has(value) | 返回一个布尔值,表示该值是否为Set的成员。 |
lear() | 清除所有成员,没有返回值。 |