es6之函数扩展与对象扩展

一、函数扩展

1、参数默认值

参数有默认值,后面不可以再加没有默认值的变量。如以下test函数中,不可以加写成

function test(x,y="word",z){

}

function test(x,y="word"){
        console.log("默认值",x,y);
    }
    test("lala"); //lala word
    test("lala","你好啊"); //lala 你好啊

2、作用域的问题

//作用域的问题
    let x="test";
    function test2(x,y=x){
        console.log("作用域",x,y);
    }
    test2("kill"); //kill kill
test2() //undefined undefined

function test3(c,y=x){
console.log("作用域",c,y);
}
test3("kill"); //kill test

  

3、参数问题 

...arg后不可再加参数

function test4(...arg){
        for(let v of arg){
            console.log("rest",v);
        }
    }
    test4(1,2,3,4,"a");  //1,2,3,4,a

console.log("a",...[1,2,3]); //a 1 2 3

4、伪调用  主要用于提升性能

 //伪调用
    function trail(x){
        console.log("tail",x);
    }

    function fx(x){
        return trail(x)
    }
    fx(123);

  

二、对象扩展  

  1、简洁表示法

 //简洁表示法
    let o=1;let k=2;
    let es5={
        o:o,
        K:k
    };
    let es6={
        o,k
    }
    console.log(es5,es6);

    let es5_method={
        hello:function(){
            console.log("11hello");
        }
    }
    let es6_methods={
        hello(){
            console.log("22hello")
        }
    }

    console.log(es5_method.hello(),es6_methods.hello());

2、属性表达式

//属性表达式
    let a="b";
    let es5_obj={
        a:"c"
    }
    let es6_obg={
        [a]:"c"
    }
    console.log(es5_obj,es6_obg);

3、新增API

  //新增api
    console.log("字符串",Object.is("abc","abc"),"abc"==="abc"); //true true
    console.log("数组",Object.is([],[]),[]===[]);  //false false

    console.log("拷贝",Object.assign({a:"a"},{b:"b"})); //a:"a",b:"b"

  

  

  

posted @ 2017-11-20 12:51  karila  阅读(239)  评论(0编辑  收藏  举报