- 參數(shù)默認(rèn)值
- rest參數(shù)
function add(...numbers){
return numbers.sort();
}
- 嚴(yán)格模式
ES5開始,函數(shù)內(nèi)部可以設(shè)定為嚴(yán)格模式
function f(){
'use strict';
}
ES2016 做了一點(diǎn)修改,規(guī)定只要函數(shù)參數(shù)使用了默認(rèn)值,結(jié)構(gòu)賦值、或者擴(kuò)展運(yùn)算符,那么函數(shù)內(nèi)部就不能顯示設(shè)定為嚴(yán)格模式,否則會(huì)報(bào)錯(cuò)。
這樣規(guī)定的原因是,函數(shù)內(nèi)部的嚴(yán)格模式,同時(shí)適用于函數(shù)體和函數(shù)參數(shù)
- name屬性
function ttt(){}
ttt.name; // ttt
- 箭頭函數(shù)
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
箭頭體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象。
不可以當(dāng)做構(gòu)造函數(shù)
不可以使用arguments對(duì)象
不可以使用yield命令
- 尾調(diào)用優(yōu)化
尾調(diào)用:某個(gè)函數(shù)的最后一步是調(diào)用另一個(gè)函數(shù)
優(yōu)化:只保留內(nèi)層函數(shù)的調(diào)用幀,如果所有的函數(shù)都是尾調(diào)用,那么完全可以做到每次之行時(shí),調(diào)用幀只有一項(xiàng),這將大大節(jié)省內(nèi)存
尾遞歸:尾調(diào)用自身,稱為尾遞歸
尾遞歸只存在一個(gè)調(diào)用幀,所以永遠(yuǎn)不會(huì)發(fā)生棧溢出錯(cuò)誤。
Es6的尾調(diào)用優(yōu)化只在嚴(yán)格模式之下開啟,正常模式是無效的 - catch命令的參數(shù)省略
try{
} catch {
}