Почему первая версия моего кода javascript возвращает неопределенное значение, когда я требую его в Node REPL, тогда как вторая версия работает?
Когда я запускаю две версии кода ниже в консоли браузера, они обе делают то, что я хочу (функции работают, текст var остается закрытым). Это побудило меня спросить, зачем мне возиться с экспортом/этой конструкцией во второй версии.
Однако я заметил, что первая версия (без этой конструкции) не работает, если я требую ее в Node REPL, поэтому явно экспортирует/это делает что-то дополнительное, чего я не понимаю.
Может ли кто-нибудь объяснить, почему это необходимо, простыми словами (я относительно новичок в JS).
Первая версия без IIFE и экспорта/этого:
function Note(string) {
var text = string;
function getText() {
return text;
}
return {
getText: getText
}
}
Вторая версия с IIFE и экспортом/этим:
(function(exports) {
function Note(string) {
var text = string;
function getText() {
return text;
}
return {
getText: getText
}
}
exports.Note = Note;
})(this);