javascript的立即执行函数
在javascript中有引入立即执行函数的概念,那么什么是立即执行函数呢?立即执行函数又是怎么写的呢?立即执行函数与普通函数有什么区别呢?
先来看看一般的函数:
function a(){
var num = 100;
console.log(num);
}
以上就是javascript中随便定义的最普通的函数,函数一旦被定义,就会一直等着被执行,会一直占用空间。除非等到javascript执行完函数才会被释放。但是有些时候不想要这么多空间被占用,因为会浪费效率。有些函数从出生到javascript执行完它就只被执行了一次。这就导致该函数的空间被一直占用。为了避免这种不必要的空间被一直占用,javascript引入了立即执行函数。
(function test(){
var a = 12;
var b = 13;
console.log(a+b);
}())
上边这种写法就是立即执行函数

我们看出函数可以正常执行,但是在执行之后就再也找不到这个函数了。所以立即执行函数我们一般不给他取名字。
同样和普通的函数一样,立即执行函数也可以有参数和返回值。(不能有返回值的函数还要它干嘛啊)
var sum = (function (x,y,z) {
return x+y+z;
}(5,6,7))
这样的话,函数执行完虽然被销毁,但是返回值被num接收。同样也解决了内存占用的问题。
下边是两种常见的立即执行函数的写法:
(function (){}()); W3C建议使用第一种
(function (){})();
在开发中,立即执行函数主要用于解决闭包的问题和针对初始化的功能等,在初始化页面时用到的立即执行函数不需要有返回值,但是在初始化页面的时候用到的立即执行函数一定要有返回值。立即执行函数照样有执行期上下文,内部照样执行预编译的环节。
再往深了探究,1.只有表达式才可以被执行符号(小括号)执行。2.能被执行符号执行的表达式他的名字就会自动被忽略。什么意思呢?看下边的例子
先来解释上边的第一句话。我们知道函数的定义分为两种(函数声明和函数表达式)
function test(){
console.log();
}()
看上边的代码能执行吗?
单写test表示函数的引用,正常情况下想要执行函数直接test(); 函数名加小括号即可,上边的函数声明跟函数引用一样,那直接加一对小括号应该也可以执行呀,结果却不然:

在系统看来这是一个非常低级的语法错误。因为小括号前边的是函数声明,而不是表达式,所以就不能被执行。
再看下边这种写法:
var a = function (){
console.log();
}()
这回小括号前边很明显是表达式,所以就可以执行。

再解释上边的第二句话。
var a = function (){
console.log();
}
现在的a还代表函数的名字呢

在下边执行这个表达式:
var a = function (){
console.log();
}()
这时候的a已经不再表示这个函数名了。

所以:能被执行符号执行的表达式他的名字就会自动被忽略。
类似的:
+function (){
console.log();
}()
-function (){
console.log();
}()
!function (){
console.log();
}()
以上几种情况前边很明显是表达式,所以就可以执行。这回就一目了然为啥整体加个小括号就可以立即执行了吧,因为被小括号括起来就变成了表达式嘛,自然可以执行。
javascript的立即执行函数的更多相关文章
- Javascript的自执行函数
自执行函数其实也就是"立即执行的函数",它有四个特点:提高性能.利于压缩.避免冲突.依赖加载: 1.减少作用域查找 JS代码: // Anonymous function that ...
- JavaScript匿名自执行函数~function(){}
原博客:https://blog.csdn.net/yaojxing/article/details/72784774 1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: ...
- javascript js自执行函数
javascript 自执行函数 一.自执行函数几种写法: 写法一: ( function(){ //代码 } )(); 写法二: ( function(){ //代码 }()); 二.作用: 隔离 ...
- (转)扫盲--JavaScript的立即执行函数
看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数.立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们 ...
- JavaScript/JQuery自执行函数
JavaScript中任何库与框架设计的第一个要点就是解决命名空间与变量污染的问题.jQuery就是利用了JavaScript函数作用域的特性,采用自执行函数包裹了自身的方法来解决这个问题.从jQue ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- javascript立即执行函数
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( ...
- JavaScript 立即执行函数
js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...
- JavaScript:立即执行的函数表达式
先要理解清楚几个概念: 以下转自:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html 问题的核心 当你声明类似functio ...
随机推荐
- spark源码解析--Shuffle输出追踪者--MapOutputTracker
Shuffle输出追踪者--MapOutputTracker 这个组件作为shuffle的一个辅助组件,在整个shuffle模块中具有很重要的作用.我们在前面一系列的分析中,或多或少都会提到这个组件, ...
- HTML 从入门到精通 [目录]
目录 一.服务器的认识 二.浏览器的认识 三.Web 标准 四.HTML 的认识 五.HTML 文本标签 六.HTML 图像标签 七.HTML 路径 八.HTML 链接标签 九.HTML 列表 十.H ...
- Java 之 JDK1.8之前日期时间类
一.JDK1.8之前日期时间类 二. java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1 ...
- FileReader生成图片dataurl的分析
目录 相关代码及html(来源:百度百科) File API及FileReader简介 结合补充知识进行代码分析 修改尝试: 拖曳图片到网页完成转换 相关代码及html(来源:百度百科) <!D ...
- Android 工作流提交审批填写审批意见PopWindow工具类
公司的项目中几乎都会有走工作流这个环节,为了提高效率,现在特意把弹出的填写审批意见PopWindow改转成工具类,提高效率,免得下次又得整.先看运行效果.
- 轻量级.Net ORM SqlSuger项目实战
SqlSuger,清垃圾ORM实战例子. //添加引用 using SqlSugar; //在构造函数中实例化SqlSuger clinet = new SqlSugarClient(new Conn ...
- VMWare共享文件夹使用
1. 先在windows中创建一个文件夹,使用英文名称. 2. VMWare中,菜单栏 虚拟机->设置 3. Linux中的访问目录 /mnt/hgfs/winshare winshare ...
- 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法
目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...
- MySQL视图及索引
视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据. 视图的作用.优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 //创建.修 ...
- MySQL的select多表查询
select 语句: select 语句一般用法为: select 字段名 from tb_name where 条件 ; select 查询语句类型一般分为三种: 单表查询,多表查询,子查询 最简 ...