一)let
let和var有什么区别?
let是块作用域,可以将let后面的变量变成块作用域
ES5语法中只有全局作用域和函数作用域
二)const
如果const后面的变量是普通变量,改变值的话会报错。
const a = 1;
a = 2;
如果后面储存的是数组或者对象,改变值不报错,那么改变它的指向报错
const arr = [1,2,3];
arr = [];
三)解构赋值
var [a, b, c, d] = [1, 2, 3, 4];
对象解构赋值
let {name, age} = {name: "lyf", age: 20};
四)函数参数默认值
function getAllInfo(name="lgx", age=20) {
console.log(name);
console.log(20);
}
getAllInfo();
五)...操作符
1)rest剩余操作符
function getAllWife(first, second, ...third) {
console.log(first); //打印 lyf
console.log(second) //打印 lgx
console.log(third) //打印 ["ym", "jsy","zyj"]
}
getAllWife("lyf", "lgx", "ym", "jsy", "zyj");
2)spread扩展操作符
var a1 = [4, 5, 6];
var a2 = [7, 8, 9];
// var a3 = a1.concat(a2);之前可以用concat合并
var a3 = [...a1, ...a2];
console.log(a3);//打印[4,5,6,7,8,9]
六)function的name属性
ES6给函数添加了一个name属性,使用这个属性我们可以得到函数的名字
1)使用自定义函数,它的name属性的值就是函数的名字
function setYourLife() {
}
console.log(setYourLife.name);//打印 setYourLife
2)使用匿名函数表达式定义的函数,它的name属性的值就是变量的名字
var youLife = function() {
}
console.log(youLife.name);//打印 youLife
3)让变量等于一个匿名函数,它的name属性的值就是函数声明时的名字,因为它的优先级更高一点。
var lifeAll = function setLife() {
}
console.log(lifeAll.name);//打印 setLife