
js 闭包:立即调用函数表达式
从其他编程语言转到 javascript 时,闭包的概念可能会令人困惑。本问答将揭开闭包的谜团,帮助您理解那些包含双重括号的表达式。
在 javascript 中,可以在函数名称后面添加圆括号立即调用该函数。这称为立即调用函数表达式(iife)。例如:
(function() { console.log("hello, world!");})();
上面的代码立即调用匿名函数,输出 “hello, world!”。
立即学习“Java免费学习笔记(深入)”;
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()); // 输出 1console.log(iterator()); // 输出 2console.log(iterator()); // 输出 3console.log(iterator()); // 输出 null
双重括号 ()() 的组合允许立即创建和调用函数。iife 使我们能够控制作用域和保存对外部变量的引用,从而扩展了 javascript 的功能。
以上就是JavaScript 闭包:立即调用函数表达式(IIFE)的作用是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1495658.html
微信扫一扫
支付宝扫一扫