JavaScript 匿名函数表达式 vs IIFE

标签 javascript anonymous-function iife function-expression

遇到一些在表达式中使用 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');

但是一般来说,您可以使用 IIFE 来进行更复杂的“即时”变量赋值计算 - 如果我需要迭代某些内容,我喜欢使用它们,所以我可以拥有 i 不会污染电流范围。

但是,在您的第二个示例中,结果完全不同 - 您需要调用函数 custom_type() 以获取当前 值,而第一段代码将获得一次值,变量将保存该值。

关于JavaScript 匿名函数表达式 vs IIFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975417/

相关文章:

c# - 为什么 Func<...> 和 Action 不统一?

javascript - 尝试在对象数组中实现数组

javascript - 旋转图像跟随鼠标 jquery 平滑过渡

javascript - 未捕获(在 promise 中)

javascript - jquery为div添加背景

java - 泛型实例化和 Lambdas

javascript - 使用 twitter bootstrap 删除 ul 缩进

c# - 如何从匿名列表中删除项目

javascript - 立即调用 IIFE 如何防止它污染全局范围?

javascript - 为什么不是 (function(){}());工作,但 window.onload 是?