概述

自执行函数又被称为立即调用函数,顾名思义,就是可以函数声明后可以立即被执行,我们在读常用js库(如jquery)源码时,经常会发现自执行函数的身影,下面说下我的理解。

写法

自执行函数有两种写法:
第一种写法比较常见:

(function (){console.log("方法1");
})();

第二种写法是jslint推荐的写法,看上去比较有整体性:

(function (){console.log("方法2");
}());

上述两段代码执行时都会立即输出结果。

作用

自执行函数出现有两个作用:

  • 页面加载时需要做一些设置工作,如初始化操作,这些工作没必要重复执行,因此不需要一个有名字的复用函数
  • 做这些工作有时需要用到一些变量,这些变量不能污染全局作用域

如下例:我们想实现一个功能,当用户进入页面时,给予用户友好提示,首先,我们想到声明一个方法。

function showMessage(){var message = "Welcome";alert(message);
}

后来,我们发现这个方法只需要执行一次,于是我们去掉方法,直接在js中写:

var message = "Welcome";
alert(message);

此时我们发现在以后的代码中如果想要声明另一个message,就不得不考虑前边已经有一个message的问题,因此我们可以写成自执行函数,代码如下:

(function (){var message = "Welcome";alert(message);
})();

这就起到了只执行一次并且隔离作用域的作用。

javascript自执行函数相关推荐

  1. JavaScript立即执行函数报错--立即执行函数原理分析

    JavaScript立即执行函数报错 1.'()'在JavaScript环境中有提升运算符优先级和执行函数的作用如果直接在JavaScript环境中执行'()',环境会报出语法错误提示. 2.'()' ...

  2. JavaScript自执行函数,自执行函数是什么,存在的意义?

    JavaScript自执行函数 1.自执行函数是什么 2.自执行函数存在的意义 2.1封装 3.自执行函数两种常见的的写法 3.1自执行函数的第一种写法 3.2自执行函数的第二种写法 4.自执行函数的 ...

  3. JavaScript 自执行函数剖析

    回想一下,我们平时写的一些具名函数(也就是区别于匿名函数的函数),如下面一个例子: 1 function sayHello(){ 2 console.log("hello,我是林丽君&quo ...

  4. Javascript 立即执行函数

    http://weizhifeng.net/immediately-invoked-function-expression.html var f1 = function() {var res = [] ...

  5. Javascript 自执行函数

    前言 大家学JavaScript的时候,经常遇到自执行匿名函数的代码,今天我们主要就来想想说一下自执行. 在详细了解这个之前,我们来谈了解一下"自执行"这个叫法,本文对这个功能的叫 ...

  6. JavaScript 立即执行函数的两种写法

    (function(str){console.log(str+'欢迎你~');})('行步至春深');(function(str) {console.log(str+'欢迎你~');}('行路易知难' ...

  7. JavaScript 自执行函数和 jQuery扩展方法

    我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件.但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题.那么如何解决这个问题呢?作用域隔离.在JS中,作用域是通过函数来划分 ...

  8. JavaScript立即执行函数学习

    1.新建对象,方法内变量作用域理解错误 var md1 = {count: 0,add: function () {count++;},sub: function () {count--;},show ...

  9. JavaScript 自执行函数(闭包)

    1. 全局污染 在变量声明的时候有一个规则:重复声明无效 var num = 123; var num = 'abc'; 重复声明的代码不会报任何错误,但是其声明特征就没有了,会转换成普通赋值语句 故 ...

最新文章

  1. [01]关于TDD、BDD和DDD的一些看法
  2. 小扎不哭!FB又陷数据泄露风波,9000万用户受影响
  3. TFS版本管理(八)
  4. uniapp使用android studio进行调试的配置
  5. 弹窗设计UI素材模板|带你了解下弹窗特性
  6. 如何将PDF转成高清JPG图片
  7. IBM刀片服务器虚拟化方案
  8. iic协议 c语言,IIC协议-C语言
  9. Hive:用SQL对数据进行操作,导入数据、清洗脏数据、统计数据订单、优化结果输出等等
  10. excel两个字符串相减_Excel小技巧|三种方法计算算式字符串
  11. MT6573添加新硬件模块驱动方法
  12. java框架技术路线 2019.10.3
  13. 怀恋曾经老飞飞那些厉害的功能总结贴2023
  14. and什么意思计算机SQL,SQL语句中 AND和OR的区别,or是什么意思,那and和它有什么区别?...
  15. 【Alist + Teracloud】WebDAV免费畅游互联网个人方案总结,一些支持WebDAV的应用推荐
  16. GPS涉及到的各种时间转换(年月日,年积日,儒略日,GPS周及周内日或周内秒,星期几)python
  17. [精简]RuoYi开发实战-搭建开发环境
  18. 云服务器流量是什么东西_在线科普,买一台云服务器到底能干嘛?
  19. Flink教程(31)- Flink网络流控及反压
  20. 第一部分——简单句——第一章——简单句的核心——第二节 简单句的核心变化——情态,语态,否定(强调)

热门文章

  1. 在干扰和箔条环境中的雷达方程
  2. MALT1 抑制剂,1926163-57-6,Z-VRP-DArg-FMK
  3. Array数组操作(变异更新、替换)
  4. Vue学习第14天——vue自定义事件及详细代码演示
  5. MATLAB符号运算实现复变函数积分
  6. c++系列(五)—— 静态成员
  7. 2020美容师(初级)考试及美容师(初级)模拟考试
  8. matlab中将RGB图像转化为灰度图像
  9. 10_linux内核定时器实验
  10. 如何用python进行电话骚扰_打游戏被女朋友骚扰?看我用Python自动回复