猿问

js函数里面的参数可以这样写?怎么理解呢?

function createConnect({

  connectHOC = connectAdvanced,

  mapStateToPropsFactories = defaultMapStateToPropsFactories,

  mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,

  mergePropsFactories = defaultMergePropsFactories,

  selectorFactory = defaultSelectorFactory

} = {}){}


宝慕林4294392
浏览 473回答 1
1回答

MMMHUHU

这是es6里面的语法之一。先了解以下对象的解构赋值。如下:// 这个应该很好理解了var { foo, bar } = { foo: "aaa", bar: "bbb" }; foo // "aaa"bar // "bbb"// 然后解构的时候可以指定默认值var {x = 3} = {}; x // 3var {x, y = 5} = {x: 1}; x // 1y // 5var {x:y = 3} = {}; y // 3var {x:y = 3} = {x: 5}; y // 5var { 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,defaultMergePropsFact ories,defaultMergePropsFactories,defaultSelectorFactoryfunction createConnect(params = {}){    var {       connectHOC = connectAdvanced,       mapStateToPropsFactories = defaultMapStateToPropsFactories,       mapDispatchToPropsFactories = defaultMapDispatchToPropsFactories,       mergePropsFactories = defaultMergePropsFactories,       selectorFactory = defaultSelectorFactory     } = params      }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答