У меня есть IIFE, который возвращает объект. В моем файле app.js, который я добавляю к тегу script в index.html, я вхожу в консольный тип моего IIFE, и это объект. Разве это не функция? Почему typeof возвращает объект?Когда я записываю тип IIFE в консоль, это объект вместо функции, почему?
Вот мой IIFE в app.js: «сразу же вызывается выражение функции»
var UIController = (function() {
var DOMstrings = {
inputType: '.add__type',
description: '.add__description',
value: '.add__value',
addBtn: '.add__btn'
};
return {
getInput: function() {
// return an object containing all values from UI elements
return {
type: document.querySelector(DOMstrings.inputType).value, // will be either income or expense
description: document.querySelector(DOMstrings.description).value, // description of transaction
value: document.querySelector(DOMstrings.value).value // value of transaction
};
},
getDOMStrings: function() {
return DOMstrings;
}
};
})();
console.log(typeof UIController);
я не понимаю. Вы используете термин «IIFE», который звучит так, как будто вы * понимаете, что такое этот код; но тогда вы спрашиваете, почему вы получаете объект вместо функции, что заставляет его звучать так, как будто вы не понимаете, что это за код. Как вы думаете, что такое IIFE? Почему вы ожидаете получить функцию? – ruakh
Я понимаю, что он делает, но почему тип UIController - объект вместо функции? Если бы я написал выражение функции и зарегистрировал его тип на консоли, это была бы функция, а не объект, так почему я получаю объект в этом случае? – Mjuice
Почему "var x =" foo ".length; typeof x' return 'number', когда' 'foo" 'является' string'? – melpomene