es5 要實現默認參數,通常是javascript
在大括號裏 寫, java
function calc(x, y) { x = x || 0; y = y || 0; // to do with x, y // return x/y }
es6後,直接用語言自己來處理, 寫在小括號裏es6
function calc(x=0, y=0) { console.log(x,y) }
默認參數能夠不是一個值類型,它能夠是一個函數調用ajax
function throwIf() { throw new Error('少傳了參數'); } function ajax(url=throwIf(), async=true, success) { return url; } ajax(); // 沒有傳url,則使用默認參數 throwIf() 返回Error: 少傳了參數
=============================================================async
定義了默認參數,函數的length屬性會減小,即有默認參數不包含在length的計算當中函數
function calc(x=0, y=0) { console.log(x, y) } function ajax(url, async=true, dataType="JSON") { console.log(url, async, dataType) } console.log(calc.length); // 0 x,y 2個都有默認參數,不參與計算 console.log(ajax.length); // 1
function.length和 arguments的區別:url
function.length:計算形參的長度
arguments:計算實參的長度es5