理解逗号声明

时间:2017-11-25 01:02:31

标签: javascript

我正在尝试理解以下函数返回的内容:

fs.api.services.wrapOnSuccess_ = function(a, b, c) {
    if (b) return c = c || function() {},
        function(d, e, f) {
            fs.isDefinedAndNotNull(d.debugtrace) && fs.api.services.handleDebugTrace_(d.debugtrace);
            200 == d.meta.code ? (fs.api.getLogger().debug("success"),
                b(a(d.response), fs.api.services.rawBundleSuccess_(d, e, f))) :
            (fs.api.getLogger().error("non 200 meta code on api response", d), c(d.meta, fs.api.services.rawBundleSuccess_(d, e, f)))
        }

它是否正确返回三元函数,因为function(d,e,f){..}位于逗号右侧?如果是这样,是否意味着对wrapOnSuccess_的调用应该类似于wrapOnSuccess_(x,y,z)(s,t,u)

1 个答案:

答案 0 :(得分:0)

这是缩小的代码。它并不意味着在典型意义上被理解。

就其返回的内容而言,如果b是真实的,那么在function(d, e, f) {分配给c之后,如果c,它将返回c函数对于c来说,除了无操作函数之外,还有其他功能。

所以是的,如果 b是真的,你可以立即调用的返回值。看起来我们错过了其他功能。

请记住,逗号运算符的所有运算符的优先级最低。这应该有助于解决问题。