es6-函数扩展

  • 参数默认值
  • 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 {
}

你可能感兴趣的:(es6-函数扩展)