在源码中有这样一段:
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _; // 要么是exports._ = _,要么是module.exports = _
} else {
root._ = _;
}
我的疑问是exports和module.exports任意用一个就行了,这两个不会有循环引用的问题么?

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
module.exports和exports的用途是不一样的,具体表现为如果输出的对象是一个整体对象我们使用module.exports,如果是对象中的属性单个导出则使用exports在初始化的时候, exports 和 module.exports指向的是同一个object, 所以如果你:
console.log(module.exports === exports);会输出true.而
require导入时, 或者说module导出时, 导出的是module.exports所指向的object, 所以会出现一下情况:所以如果更改为:
但是如果两者始终指向同一个object, 那么如何assign都没有关系的, 比如:
所以通常会一同使用module.exports, exports, 来确保它们指向同一个object, 这样在之后的使用中也会比较一致, 且exports可以作为module.exports的一个shortcut来使用~
其实为了防止
module,exports因为element id的原因而出现误判, 所以这部分代码已经更新为: