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