传多个参数的函数
1、Rest and Spread 操作符:
用来声明任意数量的方法参数
function func(...args) {
args.forEach(function (arg) {
console.log(arg)
})
}
func(1, 2, 3)
func(4,5,6,7,8,99)

2、generator 函数
控制函数的执行过程,手工暂停和恢复代码执行
function*doSomething(){
console.log("start");
yield; //遇到yield就会停下
console.log("finshed")
}
var func1 = doSomething();
func1.next();
func1.next()
function* getStockPrice(stock) {
while (true) { //generator函数下面调用执行的时候并没有无限循环,只有当其值小于15的时候就会停止
yield Math.random()*100
}
}
var priceGenerator = getStockPrice("IBM");
var limprice = 15;
var price = 100;
while (price > limprice) {
price = priceGenerator.next().value;
console.log(`the generator return ${price}`)
}
console.log(`buying at ${price}`)
3、destructuring析构表达式
通过表达式将对象或数组拆解成任意数量的变量
从对象拆:
function getStock() {
return {
code: "ibm",
price: 100,
obj: {
price1: 200,
price2:400
}
}
}
// var stock = getStock();
// var code = stock.code;
// var price = stock.price;
var { code, price } = getStock() //对象名要保持一致
var { code: codex, price } = getStock(); //起别名可以
console.log(codex, price)
var { code, obj: { price2 } } = getStock();// 可以拿到obj里的price2属性
从数组拆:
var arry1 = [1, 2, 3, 4];
var [number1, number2,...othes] = arry1;
console.log(number1, number2,othes)
var arry1 = [1, 2, 3, 4];
var [number1, number2,...othes] = arry1;
// console.log(number1, number2,othes)
function doSomething([number1, number2, ...othes]) {
console.log(number1)
console.log(number2)
console.log(othes)
}
doSomething(arry1)
网友评论