es6 函数形参的默认值

es5中模拟默认参数

function makeRequest(url, timeout, callback) {
    timeout = timeout || 2000;
    callback = callback || function() {}
    //函数其余部分
}

timeout callback 为可选参数,如果不传入相应的参数,系统会给它们赋予一个默认值。
但是当想给makeRequest函数的第二个形参timeout传入值0,即使这个值合法,也会被视为false值,并最终将timeout赋值为2000,这种情况,更多的选择通过typeof检查参数类型:

function makeRequest(url, timeout, callback) {
    timeout = (typeof timeout !== "undefined") ? timeout : 2000;
    callback = (typeof callback !== "undefined") ? callback : function() {}
    //函数的其余部分
}

在流行的javascript库中均使用类似的模式

es6 中的默认参数值

function makeRequest(url, timeout = 2000, callback = function() {}){
     //函数的其余部分
}

只有第一个参数被认为是必填参数,其他两个可选。

//使用timeout callback默认值
makeRequest("/foo")

//使用callback默认值
makeRequest("/foo", 500)

声明函数时,可以为任意参数指定默认值,在已指定默认值的参数后可以继续声明无默认值参数。

function makeRequest(url, timeout = 2000, callback){
     //函数的其余部分
}

这种情况,只有当不为第二个参数传入值或主动为第二个参数传入undefined时才会使用timeout的默认值,

makeRequest("/foo",undefined, function(body){});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值