javaScript 立即执行函数学习笔记
立即执行函数:
即执行函数(Immediate Functions),立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行
立即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和讨论模式;
这种模式有一些几部分组成:
使用函数表达式定义一个函数(函数声明不能起作用)
在结尾加上一对括号,让函数立即被执行
将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才需要)(来自百度搜索)
立即执行函数给了一个沙箱装着函数作用域,且在执行后立即销毁,访问不到他的scope,从而不用当心它会污染全局变量
我们可以写一个例子,用前几天写的递归阶乘算法来验证:
<script>
var a = prompt("请输入值");
var num = (function mul(a) {
if (a == 1) {
return 1;
}
return a * mul(a - 1);
}(a))
document.write(num);
</script>
正常情况执行这段代码之后,是可以查询到mul函数的
而使用了立即执行函数之后,查询结果失败
这是由立即执行函数性质决定的,这也让mul函数与其内容变量不会污染到全局变量和方法
所以写立即执行函数一般也省略方法名。像这样
var num = (function () {
}())
但要注意的是,在写成立即执行函数时,这个函数已经算是表达式了,就如a+b这样
放在函数体内也就不会直接生效了,而是需要赋值给变量之后才可以使用。
博主是初学者,可能理解上会有错误,若有错误,求指正,谢谢
javaScript 立即执行函数学习笔记的更多相关文章
- JavaScript立即执行函数学习
1.新建对象,方法内变量作用域理解错误 var md1 = { count: 0, add: function () { count++; }, sub: function () { count--; ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- javascript立即执行函数
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( ...
- C++学习基础十六-- 函数学习笔记
C++ Primer 第七章-函数学习笔记 一步一个脚印.循序渐进的学习. 一.参数传递 每次调用函数时,都会重新创建函数所有的形参,此时所传递的实参将会初始化对应的形参. 「如果形参是非引用类型,则 ...
- 浏览器中js执行机制学习笔记
浏览器中js执行机制学习笔记 RiverSouthMan关注 0.0772019.05.15 20:56:37字数 872阅读 291 同步任务 当一个脚本第一次执行的时候,js引擎会解析这段代码,并 ...
- JavaScript 立即执行函数
js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...
- javascript立即执行函数 (function(){})()
看到一段代码: (function(){ var outer = $('#subject'); outer.find('li').on('mouseover', mouseover); })() ( ...
- FastJson远程命令执行漏洞学习笔记
FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...
- 《JavaScript语言精粹》学习笔记
一.in的用法 for...in 枚举一个对象的所有可枚举属性 检测DOM/BOM属性 if ("onclick" in elem) { // 元素支持onclick } if ( ...
随机推荐
- JVM分代通俗解释
JVM分代通俗解释 学习了:https://www.cnblogs.com/zgghb/p/6428395.html
- HDOJ 题目1520 Anniversary party(树形dp)
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- Cocos2dx学习报告2
记录二:创建项目,其名曰DFJ(仿照微信打飞机) 上一个记录我们说到开发环境的配置以及如何去建立自己的项目. 如今我们就通过之前说所的方法来建立一个项目.这里我就不再截图了. 建立了自己的项目之后,我 ...
- Windows下使用静态库
开发工具 vs2010 1.新建win32控制台应用程序 2.将静态库的头文件包括在程序中并手动链接静态库(库文件和头文件都在根文件夹下) watermark/2/text/aHR0cDovL2Jsb ...
- 关于Android制作.9.png图片
第一个问题,.9格式的图片与我们之前的一般图片有什么问题呢? 这是安卓开发里面的一种特殊的图片. 这样的格式的图片在android 环境下具有自适应调节大小的能力. (1)同意开发者定义可扩展区域,当 ...
- 启动hadoop遇到的datanode启动不了
从截图上看是datanode的clusterID 和 namenode的clusterID 不匹配. 解决办法: 根据日志中的路径,cd /hadoop/data/dfs/ 能看到 data和name ...
- python对MySQL进行添加修改删除以及字符串的操作
# coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...
- c# 结构 struct
结构是使用 struct 关键字定义的,与类相似,都表示可以包含数据成员和函数成员的数据结构. 一般情况下,我们很少使用结构,而且很多人也并不建议使用结构,但作为.NET Framework 一般型別 ...
- POJ 1320 Street Numbers(佩尔方程)
Street Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 3078 Accepted: 1725 De ...
- LLDB使用篇(上)
LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件. 本系列针对于已经知道何为debugger,且 ...