美文网首页
es6--强大的函数

es6--强大的函数

作者: lvyweb | 来源:发表于2021-06-09 07:09 被阅读0次

    1. 带参数的默认值的函数

      // es5的写法
            function add(a,b){
                a = a||10;
                b = b||20;
                return a+b;
            }
            add();
            console.log(add());//30
            // --------------------------
            // es6中
            function add(a=10,b=20){
                return a+b;
            }
            console.log(add());//30
            console.log(add(30))//50  传入一个值,相当于传入了a ,b使用默认值
    

    2. 默认的表达式也可以是一个函数

         function add(a,b= getVal(5)){
                return a+b;
            }
            function getVal(val){
                return val+5;
            }
    
            console.log(add(1));//11
    
    

    3.也可以是一个不具名函数

       // es5写法:遍历比较麻烦
       function pick(obj){
                let result = Object.create(null);//相当于[];
                for(let i = 1; i<arguments.length;i++){
                    // console.log(arguments[i])
                    result[arguments[i]] = obj[arguments[i]]
                }
                return result;
            }
            let book ={
                'title':'es6教程',
                'author':'小玉米',
                'year':'2021',
            }
            let bookData = pick(book,'author','year');
            console.log(bookData);//[author: "小玉米", year: "2021"]
    

    es6写法
    提供一个方法叫做剩余参数
    剩余参数:是由三个点...和一个紧跟着具名参数指定,语法...keys

            function pick(obj,...keys){ //必须放在最后一个参数那里
                //  console.log(keys);//["author", "year"]
                let result = {};
                for(let i = 0; i<keys.length;i++){
                    result[keys[i]] = obj[keys[i]];
                }
                return result;
    
    
            }
            let book ={
                'title':'es6教程',
                'author':'小玉米',
                'year':'2021',
            }
            let bookData = pick(book,'author','year');
            console.log(bookData);
    

    剩余参数解决了arguments问题

    更简单的例子

     function checkArgs(...args){
                console.log(args);//["a", "b", "c", "d"] 真实的数组
                console.log(arguments);//Arguments(4) ["a", "b", "c", "d", callee: (...), Symbol(Symbol.iterator): ƒ]   伪数组
            }
     checkArgs('a','b','c','d')
    

    4. 扩展运算符 ...

    剩余运算符:把多个独立合并到一个数组中(一般用于函数的形参上)
    扩展运算符:将一个数组分隔,并将各个项作为分离的参数

    //处理数组中最大函数
    const arr =[12,10,5,6,8,9];
    // es5方法
    console.log(Math.max.apply(null,arr));//12
    // es6方法:使用扩展运算符更方便
    console.log(Math.max(...arr));//12
    

    相关文章

      网友评论

          本文标题:es6--强大的函数

          本文链接:https://www.haomeiwen.com/subject/kgnheltx.html