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)); //
console.log(adds(...a)); //
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。