【JavaScript】浅析IIFE的作用

什么是IIFE

IIFE就是立即执行函数表达式(Immediately-Invoked Function Expression)

为什么需要IIFE

应用IIFE有两个比较经典的使用场景,

第一就是在循环中定时输出数据项,

for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},1000);
}

上面输出的并不是0,1,2,3,4而是5,5,5,5,5

for(var i=0;i<5;i++){
(function(i){
setTimeout(function(){
console.log(i);
},1000);
})(i)
}

这输出的才是0,1,2,3,4

第二是类似于jQuery/Node的插件和模块开发

(function($){
//代码
})(jQuery)
时间: 2024-12-31 04:01:38

【JavaScript】浅析IIFE的作用的相关文章

javascript中defer的作用

javascript中defer的作用 <script src="../CGI-bin/delscript.js" defer></script>中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题 加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!defer是脚本程序强大功能中的一个"无名英雄".它告诉浏览器Script段包含了无需立即执行

javascript:void(0)的作用示例

在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,或者是跳到设置的锚点的地方,用户体验不好. 通常的用法为: <a href="javascript:void(0)">单击此处看看效果</a> 实际上单击此处什么也不会发生,其中的javascript:void(0);形式是一个javascript的伪协议,是表

JavaScript 浅析数组对象与类数组对象

数组(Array对象) 数组的操作 创建数组方法 添加与修改数组元素 删除数组元素 使用数组元素 遍历数组元素 多维数组 数组相关的函数 concat() join() pop() push() shift() unshift() reverse() sort() slice() splice() 类数组对象 定义 举例 对比数组 转换 间接 直接 数组(Array对象) 数组就是一组数据. 在JavaScript中没有数组这种数据类型.数组时对象创建的. 键(下标): 用于区分数组中不同数值的

JavaScript的IIFE(即时执行方法)

IIFE :immediately-invoked function expression (1)标准写法 1 (function(window, document, undefined) { 2 //你的代码 3 })(window, document); 例如: 1 //jQuery 2 (function($){})(jQuery); 3 //mui 4 (function($){})(mui); (2)作用域Scope JavaScript有function作用域,所以function首

html/css/javascript的含义、作用及理解

HTML(HyperText Markup Language/超文本标记语言) 含义:HTML是一种用于创建网页的标准标记语言. 作用:页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 理解:主要是用于建立网页的骨架,是结构层,可以理解成建房子的钢筋水泥. CSS(Cascading Style Sheets/层叠样式表) 含义:CSS是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. 作用:静态地修饰网页, 能够对网页中元素

js 闭包 匿名函数 JavaScript的IIFE(即时执行方法)immediately-invoked function expression

参考:http://segmentfault.com/a/1190000000348228 http://segmentfault.com/q/1010000000442042 问题: (function(){ function a(){ alert("a"); } })();这里的(function(){xxx})(); 是什么意思,为什么这么写,有什么好处?答: function foo() {...} // 这是定义,Declaration:定义只是让解释器知道其存在,但是不会运

JavaScript函数之作用域 / 作用链域 / 预解析

关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ ------------------------------------------------------------------------------------------------------------------------------------------- 作用域 js中作用域只有一种,就是函

javascript:变量、作用于和内存问题

一:理解基本类型和引用类型的值 javascript变量有两种不同的数据类型值:基本数据类型和引用数据类型.基本数据类型有undefined.null.boolean.number.string.引用类型是保存在内存中的对象,javascript规定不能直接操作内存中的对象,在操作对象时,其实是操作的对象的引用.在将一个值赋给变量时,需要确定值的类型,对不同类型的变量执行的操作是不同的,引用类型值可以进行属性和方法的创建和删除,基本数据类型就不可以. 复制变量 对于基本数据类型,复制变量时,重新

JavaScript之ajax的作用、流程以及如何设置请求头

什么是ajax?它的作用是什么?它的流程好处又有那些?如何设置请求头呢????????(嘻嘻,不知道请往下看哦): 1)什么是ajax呢? ajax即"Asynchronous Javascript And XML"(异步的JavaScript和xml),是指一种创建交互式网页应用的网页开发技术. 2)ajax的作用又是什么呢? 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 通俗的来讲:它是一种