美文网首页
*闭包(上)与立即执行函数[JavaScript_007]

*闭包(上)与立即执行函数[JavaScript_007]

作者: 六亲不认的步伐 | 来源:发表于2019-03-13 18:26 被阅读0次

闭包


  • 定义 :内部函数被保存到外部,将生成闭包
  • 危害 :导致原有作用域链不释放,造成内存泄漏
  • 作用
    1. 实现公有变量

function sum(){
    var sum = 0 ;
    function op(){
        sum ++;
        console.log(sum);
    }
    return op;
}

此处的sum变量公有化
2. 可以进行缓存(外部不可见)


 function test(){
    var num =100;//隐式的缓存
    function a(){
        num ++;
        console.log(num);
    }
    function b(){
        num --;
        console.log(num);
    }
    return [a,b]
}
var myArr =test();
myArr[0]();//101
myArr[1]();//100  
  1. 可以进行封装,属性私有化
  2. 模块化开发,防止污染全局变量

立即执行函数


作用:针对初始化功能,执行完成后立即释放,只执行一次

(function (形参位置){
      var a = 1; 
      var b = 1; 
      console.log(a+b);
    }(实参位置)
  )//可以有返回值

形式:

    (function(){}());//W3C建议
    (function(){})();

上述代码中()为执行符号

函数执行符号()扩展


原则:只有函数表达式才能执行

    function test(){
        console.log(’Hello World‘)
    }();//语法错误,原因这个是函数声明并不是函数表达式
    +  function test(){
        console.log(’Hello World‘)
    }();//输出a ,+的操作强制转为Number,所以属于表达式,例如 +,-,!,但是乘除不行
  • 特例:
    function test(a){
        console.log(a)
    }(5);//没有输出,也不报错
原因:(5)当成运算符进行处理,上面为方法体。
    var test = function(){
        console.log(’Hello World‘)
    }();//输出a
    console.log(test);//输出undefined,类似与立即执行函数,此函数被放弃,导致为undefined

相关文章

  • *闭包(上)与立即执行函数[JavaScript_007]

    闭包 定义 :内部函数被保存到外部,将生成闭包 危害 :导致原有作用域链不释放,造成内存泄漏 作用实现公有变量 此...

  • JavaScript闭包(三)

    目录 1.执行环境与作用域链 2. 立即执行函数 3. 闭包知识点 3.1 什么是闭包 3.2 使用闭包的意义与注...

  • 闭包与立即执行函数

    在学习js的过程中,我们都会遇到闭包和立即执行函数的相关概念,今天就这两个概念做一个大致的整理。 本文结构: 闭包...

  • 理解闭包

    什么是「闭包」。 「闭包」的作用是什么。在一个立即执行函数当中: 首先,假设以上几行代码运行在立即执行函数当中,那...

  • IIFE(Immediately-invoked functio

    一、立即执行函数五花八门的写法: 二、立即执行函数与闭包的暧昧关系 像普通的函数传参一样,立即执行函数也能传参数。...

  • es5核心技术

    立即执行函数 函数提升和变量提升 闭包 this 原型链实现继承

  • javascript立即执行函数和闭包

    闭包 概念:当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链举例分析: 闭包的应用: 立即执行函数 ...

  • 闭包、立即执行函数闭包、BOM

    题目1: 下面的代码输出多少?修改代码让 fnArr[i]()输出i。使用 两种以上的方法 改写1 改写2 题目2...

  • 闭包_定时器

    闭包的作用是:暴露局部函数立即执行函数 ==> 闭包 下面的代码输出多少?修改代码让 fnArri 输出 i。使用...

  • 立即执行函数和闭包

    立即执行函数: 一、计时器 一次性定时器 setTimeOut(function(){ //1秒后执行 },100...

网友评论

      本文标题:*闭包(上)与立即执行函数[JavaScript_007]

      本文链接:https://www.haomeiwen.com/subject/ahuzpqtx.html