遇到一些使用立即调用函数表达式(IIFEs)而不是普通函数的代码。
通常我会以类似以下的方式进行编写:
var custom_type = (function() {
return $('#myDiv').attr('custom_type');
})();
通常我会以类似以下的方式进行编写:
var custom_type = function() {
return $('#myDiv').attr('custom_type');
};
IIFE的原因是什么?我所能想到的唯一一件事是,IIFE可能只在开始时分配custom_type
变量一次,而第二个可能会在每次引用变量时继续检查更新的类型。
var custom_type = $('#myDiv').attr('custom_type')
。所以这两个例子有不同的结果(在第一个例子中,custom_type
是一个字符串,在第二个例子中它是一个函数),没有上下文的情况下无法确定为什么使用了第一个例子。可以推测编写代码的人不希望custom_type
是一个函数。 - Felix Kling