【发布时间】:2014-05-23 09:57:15
【问题描述】:
遇到了一些在表达式中使用 IIFE 而不仅仅是普通函数的代码。
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成为一个函数。
标签: javascript anonymous-function iife function-expression