【发布时间】:2019-01-03 08:52:21
【问题描述】:
为什么当我在 Node REPL 中需要时,我的 javascript 代码的第一个版本返回 undefined,而第二个版本有效?
当我在浏览器控制台中运行以下两个版本的代码时,它们似乎都在执行我想要的操作(函数有效,var 文本保持私有)。这促使我问为什么我需要在第二个版本中处理导出/这个结构。
但是我注意到,如果我在 Node REPL 中需要它,第一个版本(没有该结构)将不起作用,因此很明显导出/这是在做一些我不理解的额外操作。
谁能用简单的术语解释一下为什么它是必要的(我对 JS 比较陌生)。
第一个没有 IIFE 和 export/this 的版本:
function Note(string) {
var text = string;
function getText() {
return text;
}
return {
getText: getText
}
}
带有 IIFE 和 export/this 的第二个版本:
(function(exports) {
function Note(string) {
var text = string;
function getText() {
return text;
}
return {
getText: getText
}
}
exports.Note = Note;
})(this);
【问题讨论】:
-
你需要它吗?
-
let Note = require('./src/note-model.js').Note
标签: javascript module this iife