我有一个返回对象的IIFE.在我的app.js文件中,我将其添加到index.html中的脚本标记中,我登录到我的IIFE的控制台类型,它是一个对象.它不应该是一个功能吗?为什么typeof返回一个对象?
这是app.js中的IIFE:
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);
Run Code Online (Sandbox Code Playgroud)
IIFE代表"立即调用的函数表达式."换句话说,是通过调用函数创建的表达式.调用函数意味着调用函数并生成结果.IIFE的值是调用(调用)函数的结果,而不是函数本身.
在您的示例中,为变量UIController分配调用函数的结果.您的函数返回了具有两个属性的对象.该对象被分配给UIController.因此按预期typeof UIController生产object.