js立即执行函数
一、JS立即执行函数的写法
方式1、最前最后加括号
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/ExpandedBlockStart.gif)
(function(){alert(1);}());
方式2、function外面加括号
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/ExpandedBlockStart.gif)
(function(){alert(1);})();
方式3、function前面加运算符,常见的是!与void
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/ExpandedBlockStart.gif)
!function(){alert(1);}();
void function(){alert(2);}();
二、立即执行函数的参数
可以给立即执行函数传递参数,例如
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/ExpandedBlockStart.gif)
(function(who, when) {
console.log("I met " + who + " on " + when);
} ("Joe Black", new Date()));
记住:
1、立即函数内部是可以访问外部变量的,所以很多情况下,我们并不需要传参数。如:jQuery的window实参,如果不传入。内部也是可以直接使用的。
2、通常你不应该给立即执行函数传递太多的函数,因为它很快会成为一个负担——为了理解代码是如何工作的,你不得不经常上下滚动源代码。
三、立即执行函数的返回值
像其它任何函数一样,一个立即执行函数也能返回值并且可以复制给其它变量,例如
var result = (function () {
return 2 + 2;
}());
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/ExpandedBlockStart.gif)
var result = (function () {
return 2 + 2;
})();
四、立即执行函数的好处
1、立即执行函数模式被广泛使用,它可以帮你封装大量的工作而不会在背后遗留任何全局变量。
立即执行函数通常作为一个单独模块使用。一般没有问题,但是,建议在自己写的立即执行函数前加分号,这样可以有效地与前面代码进行隔离。否则,可能出现意想不到的错误。
例如
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
![](http://m.studyofnet.com/Codefan-Controls/OutliningIndicators/None.gif)
var c = 12
var d = c
(function () { var e = 14; }())
会报这样一个错误:
js立即执行函数的更多相关文章
- 模板语言变量,js变量,js自执行函数之前嵌套调用
1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = &quo ...
- js立即执行函数用法
js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行. 一.JS立即执行 ...
- js自执行函数的常见写法
js自执行函数的常见写法 2016-12-20 20:02:26 1.关于自执行函数 1.1 写自执行函数的好处:独立的作用域,不会污染全局环境 (function() { })(); 1.2 理解重 ...
- js立即执行函数应用--事件绑定
js中立即执行函数的应用:应用到事件绑定上. 少说多做,直接运行代码(代码中有注释): <!DOCTYPE html> <html lang="zh"> & ...
- js 立即执行函数定义方法
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- js基础 js自执行函数、调用递归函数、圆括号运算符、函数声明的提升 js 布尔值 ASP.NET MVC中设置跨域
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器 ...
- Ajax:js自执行函数、jsonp、cros
一.js自执行函数 #(function(){alert(1);})(); (function(){ alert(1); } )(); 二.javascript同源策略 1. 什么是同源策略 理解跨域 ...
- JS 自执行函数
由于自己js基础知识薄弱,很多js的知识还没有掌握,所以接下来会经常写一些关于js基础知识的博客,也算给自己提个醒吧. js自执行函数,听到这个名字,首先会联想到函数.接下来,我来定义一个函数: fu ...
- JS立即执行函数表达式(IIFE)
原文为 http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife ----------------- ...
随机推荐
- Easyui Ajax验证Form表单。。。
今天做项目用到easyui Ajax验证表单.本想自定义一个easyui的验证,查资料发现easyui 自带了一个通用的验证!见以下下截图. 后台返回值 true验证通过,返回false验证失 ...
- PC端一些非经典兼容性问题小札
IE10默认在input框中输入内容后会显示一个‘X’按钮,方便删除输入的所有内容. 在password输入框显示一个眼睛的按钮,去掉叉叉和眼睛的方法如下: ::-ms-clear { display ...
- 【逆向篇】分析一段简单的ShellCode——从TEB到函数地址获取
其实分在逆向篇不太合适,因为并没有逆向什么程序. 在http://www.exploit-db.com/exploits/28996/上看到这么一段最简单的ShellCode,其中的技术也是比较常见的 ...
- Linux 环境变量 设置 etc profile
一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...
- 使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)
V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...
- 用.net在画出镂空图片
最近的一个项目需要用到这个东西,冥思苦想了好几天.还是在同事的帮助下,完成此项难题,希望能够帮助以后的博友们 ! 废话不多说,先看看效果图吧. 首先写一下讲一下思路,首先画一张图,当你的背景,然后在图 ...
- 理解AUC
本文主要讨论了auc的实际意义,并给出了auc的常规计算方法及其证明 转载请注明出处:http://www.cnblogs.com/van19/p/5494908.html 1 ROC曲线和auc 从 ...
- android studio/Intellij idea之proguard实践
默认情况下,build->Gene Signed APK 反编译后发现,没有混淆... 多次爬stackoverflow才搞定这个问题: 首先 build variants这里由debug设置为 ...
- homework-01
我的GitHub账户名是Firedamp. 其实我最一开始看到最大子序列的和这个题目,最先想到的就是最简单的O(n^3)的算法,在课堂上教的也确实是这个程序,但是这种算法的时间复杂度必然是最高的,在数 ...
- pythonchallenge 解谜 Level 3
第三关. 问题的解法在于正则表达式. 首先...你应该能找到需要正则的字符在哪里...那就好了! 题意就是说: One small letter, surrounded by EXACTLY thre ...