您现在的位置:首页 >> 前端 >> 内容

es6函数形参的默认值

时间:2017/7/20 11:27:14 点击:

  核心提示:es5中模拟默认参数function makeRequest(url, timeout, callback) {timeout = timeout || 2000;callback = callbac...

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){});

Tags:ES S6 6函 函数 
作者:网络 来源:baidongyin