为什么这段代码用Object(fn)(...)包装函数调用?

时间:2018-03-30 01:35:21

标签: javascript reactjs twitch

Twitch.tv已经部署了缩小的生产代码,如下所示:

var SomeFunctions = {
    func: function(arg) {
        /* ... */
        return true;
    },
    /* ... */
};
/* ... */
function otherCode() {
    /* ... */
    var a = 3;
    if (Object(SomeFunctions.func)(a)) {
        // do something...
    }
}

显然这是由缩放器/转换器插入的,但为什么呢?这个代码模式的好处是什么?

它当然不能保护您免受TypeErrors的攻击:

>> Object(undefined)(3)
TypeError: Object(...) is not a function

在单个JS文件中,此模式发生的次数超过1,800次。

为完整起见,这是(格式化)代码的屏幕截图:

Screenshot of some code. The relevant portion is "Object(S.j)(t.props.targetLogin)".

0 个答案:

没有答案