[转]Javascript中的自执行函数表达式 本文转载自:http://www.ghugo.com/javascript-auto-run-function/ 以下是正文: Posted on 2014年6月11日 by admin | 1 Reply 在写插件或我们日常代码中,经常都会用到自执行函数表达式,最简单,最常用的也就是匿名函数自运行了.如下代码结构: 1 (function(){ 2 //code 3 })() 网上看到一篇关于这方面的文章,讲得蛮详细,特转载到博客记录一下. 转载…
一 什么是立即执行函数表达式 立即执行函数表达式,其实也可以叫初始化函数表达式,英文名:IIFE,immediately-inovked-function expression.立即执行函数表达式就是在定义的时候就立即执行. 二 立即执行函数表达式的写法 1)写法一 (function (a) { console.log('The result is ' + a); })(5); // The result is 5 2)写法二 (function (a) { console.log('The…
1)立即执行 2)表达式 3)括号,分号结束 | 前缀运算符 | 表达式上下文 4)只需要执行一次,内部变量无需维护,可用于初始化 (function( ) { })( ); 或 (function( ){ }( )); 或通过前缀运算符强制执行表达式,可以无分号 +function() { }( ) 或在表达式上下文,不需要前缀或括号,无需调用就执行了 var ourter = function outter (){ }( ) 4)可传入参数 var obj = {} ; (function(…
什么是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){…
写在前面 这是一篇译文,原文:Immediately-Invoked Function Expression (IIFE) 原文是一篇很经典的讲解IIFE的文章,很适合收藏.本文虽然是译文,但是直译的很少,而且添加了不少自己的理解. ps:下文中提到的“立即执行函数”其实就是“立即执行函数表达式” 我们要说的到底是什么? 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在该函数内部定义的变量和函数只能在该函数内部被使用,而正是因为这个上下文,使得我们在调用函数的时候能创…
立即执行函数,就是在定义函数的时候直接执行,这里不是申明函数而是一个函数表达式 1.问题 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在函数内部定义的变量和函数只能在该函数内部调用,正是因为这个上下文,使得在调用函数的时候可以创建一些私有变量.如下代码 //makeCounter,返回一个新的函数(闭包),这个函数可以访问makeCounter里的局部变量i function makeCounter() { var i = 0; return function ()…
原文地址:benalman.com/news/2010/11/immediately-invoked-function-expression/ 译者:nzbin 也许你还没有注意到,我是一个对术语比较坚持的人.因此,在听到很多次比较流行却容易产生误导的 JavaScript 术语“自执行匿名函数”之后,最终我决定把我的想法写成一篇文章. 为了提供关于这一模式如何运作的透彻信息,我已经提出了我们应该如何称呼它的建议,继续向下看.当然,如果你想跳过开头,你可以只看“自执行函数表达式”这一节,但是我建…
原文为 http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife ------------------------ES6拓展篇 ----------ES6  let实际上为 JavaScript 新增了块级作用域. ----------块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了. // IIFE 写法 (function () { var tmp = ...…
我们经常会看到这样的写法: ;(fuction () { // do something })() 这就是一个简单的IIFE(立即执行函数表达式,immediately-invoked function expression)了. 这样的写法有什么好处呢?来简单分析一下. 1. 开头的分号 我们都知道,js是可以加分号或者不加分号的,在某些情况下,不加分号会让解析器解析出错,举个例子: var a = 0 , b = 0 ; a = b + 3 (b = a) // Uncaught TypeE…
立即执行函数表达式(Immediately-invoked function expression,IIFF) 在javascript(ES5)中,是没有块级作用域的概念的 for (var i = 0; i < 5; i++) { } console.log(i); //5 因为没有块级作用域的概念,因此,在 for 循环中声明的 i 变量实际上是一个全局变量,因此可以在全局环境中访问的到. 块级作用域,也可以称为私有作用域.也就是说只在for循环的语句块中有定义,一旦循环结束,变量 i 就会…