带iife的逗号操作符



在react-redux库内部,在定义useSelector的文件中,我发现了多个逗号操作符的实例,它们以以下方式与iife一起使用:

    var _useReducer = (0, _react.useReducer)(function (s) {
    return s + 1;
  }, 0),
      forceRender = _useReducer[1];
      
  var subscription = (0, _react.useMemo)(function () {
    return (0, _Subscription.createSubscription)(store, contextSub);
  }, [store, contextSub]);
  var latestSubscriptionCallbackError = (0, _react.useRef)();
  var latestSelector = (0, _react.useRef)();
  var latestStoreState = (0, _react.useRef)();
  var latestSelectedState = (0, _react.useRef)();

我无法理解或找到任何关于为什么他们在iife中使用0的参考。

在逗号操作符上下文中,计算每个值,并且只将最后一个表达式赋值给变量。

在我的眼中,在我的理解中,0是没有意义的。有人能解释一下吗?

这样做的原因是,从逗号操作符调用函数将被调用的函数置于全局上下文中。

如果没有使用此方法调用this(上下文),则CC_2将是局部作用域。你经常会在babel或TypeScript等编译代码中发现这种行为。

相关内容

  • 没有找到相关文章

最新更新