面试题答案
一键面试创建自定义模块并通过exports导出函数
- 创建一个文件,例如
myModule.js
:
// myModule.js
function myFunction() {
console.log('This is my custom function from exports');
}
exports.myFunction = myFunction;
- 在另一个文件中引入该模块并使用:
// main.js
const myModule = require('./myModule');
myModule.myFunction();
创建自定义模块并通过module.exports导出函数
- 同样在
myModule.js
文件中:
// myModule.js
function myFunction() {
console.log('This is my custom function from module.exports');
}
module.exports = myFunction;
- 在
main.js
中引入并使用:
// main.js
const myFunction = require('./myModule');
myFunction();
同时使用exports和module.exports的情况
- 示例代码如下:
// myModule.js
function func1() {
console.log('Function from exports');
}
exports.func1 = func1;
function func2() {
console.log('Function from module.exports');
}
module.exports = func2;
- 在
main.js
中引入:
// main.js
const myModule = require('./myModule');
// myModule.func1; // 此处myModule.func1为undefined
myModule(); // 会执行func2,因为module.exports最终覆盖了exports
当同时使用exports
和module.exports
时,module.exports
会最终决定模块导出的内容。exports
本质上是module.exports
的一个引用,但是如果直接给module.exports
赋值一个新的对象、函数等,就会切断与exports
的联系,最终导出的是module.exports
所指向的内容。