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。