我是靠谱客的博主 靓丽大神,最近开发中收集的这篇文章主要介绍第八讲 《javascript 第八讲 二 立即执行函数》,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

                                             javascript  立即执行函数

先看下面这段代码:

func  a(){
    var b = function () {
        var bbb = 234;
        console.log(aaa);
    }
    var aaa = 132;
    return b;
}

var glob = 1000;
var demo = a()
demo()

方法 ba 中定义; 在 a 外部执行   (保存  函数 a 的执行上下文); ----------------> 生成闭包

 

闭包函数的小例子:

function a() {
    var num = 100;
    function b() {
        num++;
        console.log(num)
    }
    return b;
}

var demo = a();
demo();  //101
demo();  //102

函数a  执行的时候 ,  函数b 未被执行 并且返回    函数b; ------>形成闭包  

这时候返回的 函数b 会带着 函数a 的 执行上下文
在这里 demo 始终保存着 返回 函数b 已经 函数a 的 作用域执行链; 直到 demo 作用域销毁

 

闭包的危害:

内部函数 被保存到外部时,将会生成闭包。 闭包会导致 原有作用域链(引用类型) 不释放造成内存泄露(占用,内存泄露)

闭包的作用:

  • 实现共有变量
  • 可以做缓存(存储结构)
  • 可以实现封装,属性的私有化
  • 模块化开发,防止污染全局变量

 

 

 

立即执行函数:  针对初始化的功能的函数。执行一次,执行完毕自己 立即释放

     形式:

  1. 不带参数的
    (function () {
        
    }())
  2. 带参数的
    (function (a, b, c) {
        console.log(a+b+c)// 6
    }(1,2,3))
  3. 带返回值
    var num =  (function (a, b, c) {
        var d = a+b+c;
        return d;
    }(1,2,3))

所谓 立即执行函数 不是 javascript 新创的语法(区别于普通函数的函数他就是普通函数),而是不同函数的特殊写法

官方推荐 几种写法:    只有表达式 才能被 执行符号 执行, 变成表达式以及 会忽略 函数的名字

1=>:    (function () { //                           }())                                    W3C 建议写法

2=>:    (function () { //                           })() 

3=>:    + function test (){//                     }()                                     +  运算符(正负)   隐士转化 为表达式

4=>:    -  function test (){//                     }()                                     -  运算符(正负)    隐士转化 为表达式

5=>:    !  function test (){//                     }()                                     !  运算符 隐士转化 为表达式

 

 

函数的定义  两种   只有表达式 才能被 执行符号 执行

1 函数的声明
function f() {}

2 函数表达式
var fun1 = function () {  }


函数的声明 不能被执行
function f() {}()                                                            //报错
函数表达式 可以被执行
var fun1 = function () { console.log('fun1')  }()           //执行 打印 fun1    var fun1 是返回值

 

 

 

最后

以上就是靓丽大神为你收集整理的第八讲 《javascript 第八讲 二 立即执行函数》的全部内容,希望文章能够帮你解决第八讲 《javascript 第八讲 二 立即执行函数》所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部