# 1:rest and spread操作符 --- ...args
No 1 : 用来声明任意数量的方法参数
function test(...args) {
args.forEach(function (arg) {
console.log(arg)
})
};
test(1, 2, 3, 4);
//打印1,2,3,4
转JS:
function test() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
args.forEach(function (arg) {
console.log(arg);
});
};
test(1, 2, 3, 4);
No 2:也可以对声明了固定数量参数的函数进行参数数量不等的调用
function test(a,b,c) {
console.log(a);
console.log(b);
console.log(c);
};
var arr = [1, 2];
test(...arr);//打印1,2,undefined
var arr2 = [1, 2, 3, 4, 5, 6];
test(...arr2);//只识别前三个参数,打印1,2,3
# 2:generator函数
No 1:控制函数的执行过程
No 2:通过function*声明一个generator函数在函数中添加yield和next()可对其进行打断和分布执行操作
function* test(){
console.log("start");
yield;
console.log("finish");
}
var fun1 = test(); //须将函数声明为变量使用此方法
fun1.next();
fun1.next();
每个.next()执行yield分割的一段代码,第一个fun1.next();执行至yield之前停止打印出"start",第二个fun1.next()执行之后的代码,打印出"finish"
# 3:destructuring 析构表达式
No 1:通过表达式将对象或数组拆解成任意数量的变量
function fun() {
return {
title:"xxj",
total:36
}
}
var { title , total } =fun(); //变量名与函数中的属性名对应相同
var { title :name , total } =fun(); // 或者起个别名
console.log(title);
console.log(name);
这句话等价于 如下:
var aa =fun();
var title = aa.title;
var total = aa.total;
No 2:析构表达式的嵌套 --- 从对象拆值
function fun() {
return {
title:"xxj",
total:{
total1:25,
total2:57
}
}
}
var { title , total:{ total2 } } =fun();
console.log(total2);
No 3:析构表达式的嵌套 --- 从数组拆值
var arr = [1,2,3,4];
var [num1,num2]=arr;
console.log(num1,num2); //1 2
var [,,num3,num4]=arr;
console.log(num3,num4); //3 4 用逗号空出对应位置即可跳跃取值
var [num5,,num6]=arr;
console.log(num5,num6); //1 3
var [num7,...others]=arr;
console.log(num7,others); //1 [2,3,4] *此时将剩余的三个数打包放进others中