es的箭头函数做参数

最近看vuex的购物车案例疑惑不解

clipboard.png

clipboard.png

其中红色标出的_products和products在这起的什么作用,第一幅图中,箭头函数加上()并且带参数,那么actions中调用的时候参数products是什么??求解。。。。
感谢各位了

阅读 4k
3 个回答

修改一下,有看错的地方。等下来补充。
其实就是

setTimeout(function(){
    cb(_products)
},100)

setTimeout的回调函数里调用了一个函数cb

下方的也一样啊,下面是转es5之后的。

function getAllProducts(_ref) {
  var commit = _ref.commit;
  shop.getProducts(function (products) {
    commit(types.RECEIVE_PRODUCTS, { products: products });
  });
}

按照流程简化下

getProducts(a){
    setTimtout(function(){
        a(_p)
    },100)
}
getProducts(function(p){
    commit(x,p)
})

合并下再简化下相当于

(getProducts(a){
//a = function(p){commit(x,p)}
    setTimeout(function(){
        (function(p){commit(x,p)})(_p)
    },100)
})()
() => cb(_products)

等价于

(function () {
    return cb(_products);
}).bind(this);

而标识符 _products 就是顶上定义的那个 const _products = ...

第二个是 ES 6 中对象属性名和变量名称相同时可以简写,所以

{ products }

相当于

{ products: products }

个人理解,不一定正确。

_products是实参,products形参。
下面的箭头函数就是上面的cb

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题