es6 函数形参的默认值

来源:互联网 发布:尔康制药 知乎 编辑:程序博客网 时间:2024/06/04 18:41

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){});
原创粉丝点击