像 exports.default = (0, _createHelper2.default)(pure, 'pure'

What the purpose of writing Javascript like exports.default = (0, _createHelper2.default)(pure, 'pure', 1)?

本文关键字:pure default exports createHelper2      更新时间:2023-09-26

我发现一些库里有一些这样的表达式:

exports.default = (0, _createHelper2.default)(pure, 'pure', 1)

好像和_createHelper2.default(pure, 'pure', 1)没有区别

那么这样写的目的是什么呢?

有一个很小的区别: 调用_createHelper2.default时使用的this值:

exports.default = (0, _createHelper2.default)(pure, 'pure', 1)

_createHelper2.default将在this设置为全局对象(松散模式(或undefined(严格模式(的情况下调用。

_createHelper2.default(pure, 'pure', 1)

_createHelper2.default将被调用,this设置为 _createHelper2

(_createHelper2.default是否实际看到用于调用的this值取决于它是普通函数、绑定函数还是箭头函数的用途;但这就是调用它的区别。

exports.default = (0, _createHelper2.default)(pure, 'pure', 1)的工作原理是使用逗号运算符获取没有关联属性信息的函数引用,然后不通过属性访问调用该函数,这绕过了通常的 this 设置。所以这就像这样做:

var f = _createHelper2.default;
exports.default = f(pure, 'pure', 1)