ES6函数的拓展

  ES里面现在支持在函数的参数直接给参数赋一个默认值,ES6支持拓展运算符(...)三个英文的点,这个形式如function(...a)这个里面...a可以接受若干的值,这个拓展运算符也可以把若干的值转换为一个数组,也可以用来把字符串或类数组的对象转换为数组,如果把拓展运算符用于数组赋值只能放在末尾!!!

  拓展运算符的示例代码

function add(...values) { 
    let sum = 0 ; 
    for(var val of values){ 
        sum = sum + val; 
    } 
    return sum ;
} 
function adds(x,y){ 
    return x+y; 
} 
var a = [1,44]; 
var test = ['a','b']; 
var ceshi = ['c','d'];
console.log(add(1,2,3,4,5,6,7,8,9,10));         //55
console.log(adds(...a));                    //45
console.log([...test,...ceshi]);                //[ 'a', 'b', 'c', 'd' ]
console.log([..."hello"]);                    //[ 'h', 'e', 'l', 'l', 'o' ]    

  

  下面说下ES6支持的箭头函数方法,这个箭头函数形如(=>)。
  示例代码
var a = b => b;
//等同于
var a = function(b){
    return b;
}

  如果不需要参数或者是需要多个参数那么久可以使用圆括号()代表参数部分。

var a = () => 1 ;
//等同于
var a = function(){
    return 1;
}

 var add = (a1+a2) => {a1+a2;}
//等同于
var add = function(a1,a2){
    return a1+a2;
} 

  

使用箭头函数的几点注意事项
1.函数体内的this对象就是定义时所在的对象是固定的不可变的,而不是使用时所在的对象,如果一个函数内顺序嵌套10个箭头函数,那么只有一个this,这个this指向的是第一个箭头函数。
2.箭头函数不可以当做构造函数(也就是不可以使用new来使用箭头函数)。
3.不可以使用argument对象(argument可以参考 http://www.cnblogs.com/lwbqqyumidi/archive/2012/12/03/2799833.html),因为该对象函数体内不存在,如果要用使用rest参数代替。
4.不可以使用yield命令,箭头函数不用作用在Generator。
原文地址:https://www.cnblogs.com/qiaohong/p/7705094.html