zoukankan      html  css  js  c++  java
  • IIFE的形式、原理和常见写法

    immediately invoked function expression

    立即调用的函数表达式

    出现的形式:

    最近做牛客网的JS在线编程,遇到几道考闭包的题目,发现闭包的尾巴那儿经常会出现一对小括号。

    举个栗子:

    var result = function(str3){
             return function(){
                return fn(str1,str2,str3);
            };
        }(str1,str2);  //尾巴这里的小括号叫做‘立即执行函数表达式’,表示声明的同时立即调用这个函数
        
    

    所以百度了一些

    出现的意思/为什么要有IIFE?

    因为在es6提出块作用域之前,js只有全局作用域global scope和函数作用域function scope。

    JS只能用function用来实现作用域的隔离。

    意思就是,想隔离谁(变量、函数),就把定义它的这段代码装到一个function里。

    因此经常会见到只出现一次的function。而一般我们封装函数的目的是为了重复多次地调用。为了实现作用域的隔离这么做,有违初衷。因此就出现了IIFE,在声明的同时立刻调用,不用再另起炉灶。
    既然只使用一次,那么立即执行好了!既然只使用一次,函数的名字也省掉了!

    IIFE的常见写法

    (function foo(){  
      var a = 10;  
      console.log(a);  
    })();  
    
    (functionfoo(){  
      vara=10;  
      console.log(a);  
    }()); 
    

    一种写在括号内,一种写在括号外;

  • 相关阅读:
    java9的JShell小工具和编译器两种自动优化
    运算符
    数据类型
    常量&&变量
    强化学习复习笔记
    强化学习复习笔记
    DQN算法原理详解
    语言模型评价指标Perplexity
    C++ STL标准容器插入删除算法的复杂度
    集束搜索beam search和贪心搜索greedy search
  • 原文地址:https://www.cnblogs.com/n2meetu/p/8688485.html
Copyright © 2011-2022 走看看