函数的参数默认值
ES6允许为函数的参数设置默认值,如下例:
function Point(x =0,y=0){
this.x=x:
this.y=y;
}
var p= new Point ( );
console.log§; // p={x:o,y:0}
函数参数定义默认值之后,就不能再在函数体里用let和const了,如下面这样就是错的:
function show(a=18){
let a = 101;
}
show( );
箭头函数
ES6允许使用“箭头” (=>)定义函数
(参数) =>{ 多行语句用大括号,一条语句可不写 };等同于 function(参数){ };
var f=v=>v;
上面的箭头函数等同于:
var f= function(v){
return v;
};
如果只有一个参数,小圆括号可以省略。
var sum =(num1, num2)=> num1+num2;
//等同于
var sum= function (num1, num2){
return num1+num2;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号{ }将它们括起来,并且使用 return语句返回。
var sum =(num1, num2)=> { return num1+num2; }
由于大括号被解释为代码块,因而如果箭头函数直接返回一个对象,必须在对象外面加上括号。
var getTempItem = id =>({ id: id, name: “Temp" })
总结:
函数体内的this对象,绑定定义时所在的函数对象,而不是使用时所在的对象。由于this在箭头函数中被绑定,所以不能用call()、 apply()、 bind()这些方法去改变ths的指向。
箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会报错。箭头函数没有arguments,不可以使用 arguments对象,该对象在函数体内不存在,但可以用扩展运算符…。
let show =(…args) =>{
console.log(args); //[1,2,3,4]
}
show(1,2,3,4)