- 参数默认值
- rest参数
function add(...numbers){
return numbers.sort();
}
- 严格模式
ES5开始,函数内部可以设定为严格模式
function f(){
'use strict';
}
ES2016 做了一点修改,规定只要函数参数使用了默认值,结构赋值、或者扩展运算符,那么函数内部就不能显示设定为严格模式,否则会报错。
这样规定的原因是,函数内部的严格模式,同时适用于函数体和函数参数
- name属性
function ttt(){}
ttt.name; // ttt
- 箭头函数
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
箭头体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
不可以当做构造函数
不可以使用arguments对象
不可以使用yield命令
- 尾调用优化
尾调用:某个函数的最后一步是调用另一个函数
优化:只保留内层函数的调用帧,如果所有的函数都是尾调用,那么完全可以做到每次之行时,调用帧只有一项,这将大大节省内存
尾递归:尾调用自身,称为尾递归
尾递归只存在一个调用帧,所以永远不会发生栈溢出错误。
Es6的尾调用优化只在严格模式之下开启,正常模式是无效的 - catch命令的参数省略
try{
} catch {
}