javascript - js函数里面的参数可以这样写?怎么理解呢?
本文介绍了javascript - js函数里面的参数可以这样写?怎么理解呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
function createConnect({
connectHOC = connectAdvanced,
mapStateToPropsFactories = defaultMapStateToPropsFactories,
mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,
mergePropsFactories = defaultMergePropsFactories,
selectorFactory = defaultSelectorFactory
} = {}){}
解决方案
这是es6里面的语法之一。
先了解以下对象的解构赋值
。如下:
// 这个应该很好理解了
var { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
// 然后解构的时候可以指定默认值
var {x = 3} = {};
x // 3
var {x, y = 5} = {x: 1};
x // 1
y // 5
var {x:y = 3} = {};
y // 3
var {x:y = 3} = {x: 5};
y // 5
var { message: msg = 'Something went wrong' } = {};
msg // "Something went wrong"
运行到函数中:
// 参数是一组无次序的值
function f({x, y, z}) {
console.log(x,y,z) // 3,2,1
}
f({z: 3, y: 2, x: 1});
所以这个函数等同于这样写:
// 这些值是给定的默认值
var connectAdvanced,defaultMapStateToPropsFactories,defaultMapDispatchToPropsFactories,defaultMergePropsFactories,defaultMergePropsFactories,defaultSelectorFactory
function createConnect(params = {}){
var {
connectHOC = connectAdvanced,
mapStateToPropsFactories = defaultMapStateToPropsFactories,
mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,
mergePropsFactories = defaultMergePropsFactories,
selectorFactory = defaultSelectorFactory
} = params
}
这篇关于javascript - js函数里面的参数可以这样写?怎么理解呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文