有一种匿名函数可以自动执行,这种函数定义如下:

(function(){//执行一些语句 })();

也可以为函数添加参数,语法格式如下:

(function(arg_1,arg_2,...arg_n){//执行一些语句})(arg_1,arg_2,...arg_n);

大家可以这样理解
(function(){ })是一个函数表达式——函数表达式是一种可以用表达式声明的未命名函数,也称为匿名函数, 后面的()则是调用函数表达式,执行函数表达式中的语句。即为匿名自执行函数。

匿名自执行函数的作用:
由于函数是一个封闭的作用域范围,并且可以嵌套函数,所以可以使用这种匿名自执行函数来实现封装自己的所有函数和变量,从而避免来自多个开发者的多个函数相互冲突,并且,由于它们位于同一个函数中,所以可以互相引用。
由于外部无法引用函数内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。这同时也相当于定义了一个命名空间,来自不同的开发者的功能位于自己的命名空间内。

如何访问匿名自执行函数里面的函数和对象
通常是为函数定义一个参数,该参数是一个对象,在里面的函数或变量前加上对该对象的引用,这样该函数或变量就成为该对象的方法或属性了。

最常用到的是将全局对象window作为参数传递进去,这样函数或变量就成为全局函数和变量了。很多库函数就是用到了这种匿名自定义函数定义,,例如jQuery,整个库都位于匿名自执行函数中,并传递window作为参数。

(function(window,undefined){//jQuery定义
})(window);

javascript 匿名自执行函数相关推荐

  1. JavaScript中立即执行函数实例详解 转载 作者:李牧羊

    javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解.这篇文章 ...

  2. js中的匿名函数和匿名自执行函数

    1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id=& ...

  3. 匿名自执行函数是闭包吗?

    匿名函数与闭包函数应该是不一样的,我看到网上很多人把匿名自执行函数当做闭包,我认为这是不对的, 闭包定义: 闭包是在一个函数中可以访问另外一个函数的作用域   闭包:    function  fun ...

  4. JavaScript——(function(){})()立即执行函数解析

    要理解立即执行函数(function(){})(),先了解些函数的基本概念(函数声明.函数表达式.匿名函数). 函数声明:使用function声明函数,并指定函数名. function setFn() ...

  5. JavaScript之立即执行函数

    我们知道,在一般情况下,函数必须先调用才能执行,如下所示,我们定义了一个函数,并且调用, function fn(){console.log(1);}fn(); 打印结果为:         如果不调 ...

  6. JavaScript ES6立即执行函数

    立即执行函数 看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数.立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲 ...

  7. JavaScript 之 立即执行函数

    1.定义 ​ 声明一个函数,并立即调用这个函数,此时这个函数就是立即执行函数,简单来说就是定义函数之后立即执行该函数.立即执行函数一般也写成匿名函数的形式,匿名函数写法为 function(){},就 ...

  8. JavaScript匿名函数理解及应用

    匿名函数 匿名函数顾名思义就是没有名字的函数,在实际开发中经常会用到,也是JavaScript的重点.匿名函数又叫立即执行函数. 由于这种函数是匿名的,所以它不能被调用. 由于它不能被调用,所以如果它 ...

  9. 浅谈自执行函数-立即调用的函数表达式

    好文,屯一波:原文地址:https://www.jianshu.com/p/c64bfbcd34c3 在JavaScript中,会遇到自执行匿名函数:(function () {/*code*/} ) ...

最新文章

  1. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
  2. Sql Injection 注入攻击
  3. 通过netstat+rmsock查找AIX端口对应进程
  4. Non-zero exit code (1)
  5. 《认清C++语言》的random_shuffle()和transform()算法
  6. 使用Java代码在SAP Marketing Cloud上创建Contact数据
  7. 类加载机制(整个过程详解)
  8. 爱彼迎JavaScript 风格指南
  9. 因为一个字符校对问题,我的大厂面试挂了
  10. idea打开hierarchy面板
  11. layoutSubviews 与 drawRect
  12. hdu I Hate It
  13. python可视化入门 plotly
  14. [Vue] : vue-resource 实现 get, post, jsonp请求
  15. 市场运营:App 渠道追踪的5种方法以及渠道数据分析的两大思路
  16. ​大数据和云计算技术周报(第37期)
  17. 5.2.2 消费者和消费组元数据
  18. 旋转rot和翻转flip
  19. 初中人教版计算机具体课程,构建信息技术支持下的中学数学课程
  20. 【移动前端】需要了解的HTML5 head 头标签

热门文章

  1. Matlab2015b x86 x64 下载和安装
  2. 统计学习方法(一)——统计学习方法概论
  3. Marvell®AQC113C-B1-C、AQC113-B1-C、AQC113C-B1-I、AQC113-B1-I【以太网控制器】基本介绍
  4. spring cloud 官方文档如何阅读
  5. C 语言实现的滑动平均滤波算法,滑动平均滤波算法(递推平均滤波法)
  6. 数据库-数据库安全性
  7. 字符与字符串的变量定义
  8. google 重领浪潮之巅
  9. C++之3|静态成员与友元
  10. 析构函数的作用和用法