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 ( ...
随机推荐
- C#串口调试工具 (WPF/MVVM结构完整示例版)
前文 由于经常用到串口调试, 尽管有现成的软件, 因为前端时间涉及一个二次开发, 就因为一个RtsEnable设置, 折腾半天, 网上各种版本的也很多, 功能扩展的很开也多.所以现在自己做了一个够用 ...
- Inter-partition communication in multi-core processor
A multi-core processor includes logical partitions that have respective processor cores, memory area ...
- HDU 5297 Y sequence Y数列
题意:给定正整数n和r.定义Y数列为从正整数序列中删除全部能表示成a^b(2 ≤ b ≤ r)的数后的数列,求Y数列的第n个数是多少. 比如n = 10. r = 3,则Y数列为2 3 5 6 7 1 ...
- mysql-总结select各子句及其顺序
顺序:from->where ->group by->having ->order by
- GraphicsMagick java.io.FileNotFoundException: gm 错误解决办法
GraphicsMagick java.io.FileNotFoundException: gm 解决办法, 方法一: ProcessStarter.setGlobalSearchPath(" ...
- Swift 字典的经常用法
/* * *要正确使用字典,也须要一些条件 * 1.字典键值对的键和值的类型必须明白,能够直接指定.也能够类似数组直接赋值由编译器自己主动识别 * 2,字典必需要初始化 * 3,键的类型必须是能够被哈 ...
- MySQ学习笔记之十 NULL值处理
这是MySQL一大特殊之处. 概念上.NULL意味着"没有值"或"未知值",且它被看作有点与众不同的值. 为了測试NULL.你不能使用算术比較运算符比如=.&l ...
- tp5自定义扩展类的使用extend
1.在入口index.php定义目录 define('EXTEND_PATH', __DIR__ .'/../extend/'); 2.在使用页引用 use lib\Page; 3.初始化 $page ...
- Nginx中的upstream 分配方法
轮询 轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除. upstream www_cc_com { server 1 ...
- Codeforces 708D 费用流 (呃我们的考试题)
NB的题目背景 输入输出一样 考试的时候貌似只有gzz一个人搞出来了 %gzz 思路: 分情况讨论 add(x,y,C,E) C是费用 E是流量 1. f>c add(x,y,2,inf),ad ...