ES6补充
自执行函数
定义一个自执行函数,函数定义完成后,自己执行一次,函数名可以省略,因为没有任何意义
注意:要以分号结束,否则可能会影响后面的语句。
(functionsayHello(){console.log('sayHello');})();
自执行函数的简写形式
+functionsayYes(){console.log('sayYes');}();
自执行函数,也可以直接定义成箭头函数
(()=>{console.log('aaa');})()
rest参数
// 方法的形参前面添加...,就是方法的rest参数
//...xxx 是函数的rest参数,用于接收剩余的实参,注意:通常情况下rest参数放在最后面
//rest参数,解决了函数中arguments对象不是数组类型的缺陷
function fun1(a,b,c,...args){
console.log(a,b,c);
console.log(args);
let arr = args.map(r=>r*2)
console.log(arr);
// console.log(arguments);
}
fun1(100,200,300)
fun1(100)
fun1(10,20,30,40,50,60,70,80)
// 在定义函数时,可以给参数设置默认值
展开运算符
let arr1 = [11,22,33]
let arr2 = [44,55,66]
let arr3 = arr1.concat(arr2)
console.log(arr3);
// ...在这里就是展开运算符,在这里,展开运算符用于展开数组中的所有成员。
let arr4 = [...arr1,...arr2]
console.log(arr4);
console.log('---------------------------');
let obj1 = {
a:100,
b:200
}
let obj2 = {
c:300,
d:400,
a:500
}
// ...在这里,用于将对象的所有属性展开,并返回一个全新的对象
let obj3 = {...obj1,...obj2}
console.log(obj3);
解构赋值
//定义变量
let no = 1001
let name = '周杰伦'
let age = 30
let sex = '男'
//定义对象
let stu1 = {
//属性名:属性值
//这里的属性值是上面定义的变量保存的值
no:no,
name:name,
age:age,
sex:sex
}
console.log(stu1);
console.log('-----------------');
//对象的属性名和属性值的标识相同时,可以省略属性值
let stu2 = {
// 是no:no的简写
no,
name,
age,
sex
}
console.log(stu2);
console.log('--------------------------------------');
let stu3 = {
username:'周杰伦',
userage:30,
usersex:'男',
car:{
carName:'奔驰',
carPrice:'100W'
}
}
//过去我们这样写
// let username = stu3.username
// let userage = stu3.userage
let usersex = stu3.usersex
//现在我们这样写(解构赋值)
// usersex:usersex2 表示在解构的时候对变量名进行重命名
let {username,userage,usersex:usersex2} = stu3
console.log(username,userage,usersex,usersex2);