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

查看:79
本文介绍了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
    
}


ECMAScript 6 入门

这篇关于javascript - js函数里面的参数可以这样写?怎么理解呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆