javascript - 从参数化的 module.exports 调用函数
问题描述
参考这个解决方案,我需要将参数传递到module.exports
我的utils.js
文件中。
// utils.js
var module;
module.exports = function (name) {
if (module) return module;
module = {};
module.sayHi = function () {
return `Hi, ${name}`;
};
return module;
};
我对如何在ingsayHi
之后调用感到有些困惑。require
utils.js
// index.js
const utils = require("./utils")("Jim");
utils.sayHi();
我得到TypeError: utils.sayHi is not a function
。什么是正确的调用方式sayHi
?
解决方案
首先,您创建一个名为module
.
var module;
这没有任何作用,因为您是在模块范围内执行此操作,因此该变量已经存在。
然后你将一个函数分配给module.exports
.
在另一个模块中,您导入该函数并调用它。
该函数的第一行说:
if (module) return module;
是module
真值吗?
是的。它是一个对象。如果不是,那么分配给module.exports
将引发异常。
因此,您永远不会覆盖module = {};
或分配sayHi
功能给它。
现在看看你引用的答案:
module.exports = function (app, db) { var module = {};
它在函数范围内创建一个新变量,因此它不会与现有变量冲突。
推荐阅读
- javascript - 即使 decimalPlaces 设置为 0,最新的 Autonumeric 也允许小数点
- u-sql - USQL 性能问题
- raku - 如何防止perl编译器更改动态链接库的名称
- ios - 在 React Native 中使用 ScrollsToTop 的 Mutliline TextInput
- android - Android NDK - 使用使用不同 API 级别编译的库
- python - 如果每个数字都分配给一个名称,是否有按数字对数组进行排序的功能
- javascript - 当我从后端收到作业成功/失败通知时如何禁用 mat-spinner
- python - 使用您自己保存的模型在 Keras 中进行迁移学习
- angular - 从 Angular 7 发布的表单数据未进入 Laravel 5.7
- google-apps-script - google-apps-script 限制菜单使用/创建给用户