JavaScript 闭包:立即调用函数表达式(IIFE)的作用是什么?
js 闭包:立即调用函数表达式
从其他编程语言转到 javascript 时,闭包的概念可能会令人困惑。本问答将揭开闭包的谜团,帮助您理解那些包含双重括号的表达式。
在 javascript 中,可以在函数名称后面添加圆括号立即调用该函数。这称为立即调用函数表达式(iife)。例如:
(function() { console.log("hello, world!"); })();
上面的代码立即调用匿名函数,输出 "hello, world!"。
iife 的作用之一是创建一个新的作用域,可以访问它内部声明的变量,即使外部作用域已经执行完毕。例如:
var a = 6; (function() { var a = 5; console.log(a); // 输出 5 })(); console.log(a); // 输出 6
iife 创造了一个新的作用域,其中 a 被重新声明为 5。外部作用域中的 a 仍然保持为 6。
闭包经常使用 iife 来保存对外部变量的引用,即使外部函数已经返回。例如,下面的闭包创建一个迭代器,它可以访问外部作用域中的元素数组:
const elements = [1, 2, 3]; const iterator = (function() { let i = 0; return function() { if (i < elements.length) { return elements[i++]; } else { return null; } }; })(); console.log(iterator()); // 输出 1 console.log(iterator()); // 输出 2 console.log(iterator()); // 输出 3 console.log(iterator()); // 输出 null
双重括号 ()() 的组合允许立即创建和调用函数。iife 使我们能够控制作用域和保存对外部变量的引用,从而扩展了 javascript 的功能。
以上就是JavaScript 闭包:立即调用函数表达式(IIFE)的作用是什么?的详细内容,更多请关注其它相关文章!