函数新特性

2020-09-05  本文已影响0人  幸宇

传多个参数的函数
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)
image.png

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)
上一篇 下一篇

猜你喜欢

热点阅读