美文网首页
立即执行函数的使用

立即执行函数的使用

作者: 索伯列夫 | 来源:发表于2018-11-06 14:46 被阅读0次

一、为什么要用立即执行函数

1.我们不想用要全局变量
2.我们要使用局部变量
3.ES5里面,只有函数有局部变量(当然可以使用let)
4.于是我们声明一个函数function xxx,然后xxx.call()
5.这时候,xxx是全局变量(全局函数)
6.所以我们不能给这个函数名字
7.function(){}.call()
8.但是chrome报错,语法错误
9.可以这样来

  • !function(){}.call()(我们不在乎这个匿名函数的返回值,所以加一个!也没啥事)
  • (function(){}).call()也是可以的,但是不推荐,防止手贱写成xxx(function(){}).call()

二、 立即执行函数

立即执行函数,使得内部的变量无法被访问,就可以利用闭包完成操作。

!function(){
    var person = {
        name: 'huazhen',
        age: 18
    }
    
    window.addAge = function(){
        return person.age += 1
    }
}.call()

//另外这样访问
window.addAge()

这里,
1.立即执行函数使得person无法被外部访问
2.闭包使得匿名函数可以操作person
3.window.addAge保存了匿名函数的地址
4.任何地方都可以使用window.addAge
5.任何地方都可以使用window.addAge操作person,但是不能直接访问person

相关文章

网友评论

      本文标题:立即执行函数的使用

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