javascript匿名函数与闭包

本文详细介绍了JavaScript中的匿名函数、闭包、自由变量及高阶函数的概念。通过实例展示了闭包如何减少代码量并保持代码清晰,以及高阶函数如何通过返回另一个函数来实现特定的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]javascript匿名函数与闭包[/b]


[b]匿名函数[/b]
1.就是没有名字的函数
(function(x, y){
alert(x + y);
})(2, 3);

创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。


[b]闭包[/b]
1.使用闭包可以大大减少我们的代码量,使我们的代码看上去更加清晰等等,总之功能十分强大。
2.闭包说白了就是函数的嵌套,内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕(这点涉及JavaScript作用域链)。


[b]JavaScript 自由变量[/b]
1.在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图:
2.要到创建这个函数的那个作用域中取值,(是“创建”,而不是“调用”),如:
var x=10;
function fn(){
console.log(x);
}

function show(f){
var x=20;

(function(){
f();
})();
}

show(fn); //创建fn时,是在x=10的下一级作用域链中进行创建的



[b]高阶函数[/b]
1.返回另一个函数的函数称为高阶函数
2.内部函数在没有任何局部声明之前(既不是被传入,也不是局部声明)使用的变量就是被捕获的变量。
3.变量的捕获发生在创建闭包的时候
function makeAdder(captured) {
return function(free) {
var ret = free + captured;
console.log(ret);
}
}

var add10 = makeAdder(10);

add10(2); // 输出:12


1.外部函数中的变量captured被执行加法的返回函数捕获,内部函数从未声明过captured变量,却可以引用它。
2.要到创建这个函数的那个作用域中取值,(是“创建”,而不是“调用”)
var a = 10;
function fn() {
var b = 20;
function bar() {
console.log(a + b);
}
return bar;
}
var x = fn();
b = 200;
x(); //30

创建时a=10,b=20

参考原文:[url]http://www.cnblogs.com/wangfupeng1988/p/3992795.html[/url]
内容概要:本文档是关于基于Tecnomatix的废旧智能手机拆解产线建模虚拟调试的毕业设计任务书。研究内容主要包括:分析废旧智能手机拆解工艺流程;学习并使用Tecnomatix软件搭建拆解产线的三维模型,包括设备、输送装置等;进行虚拟调试以模拟各种故障情况,并对结果进行分析提出优化建议。研究周期为16周,涵盖了文献调研、拆解实验、软件学习、建模、调试和论文撰写等阶段。文中还提供了Python代码来模拟部分关键流程,如拆解顺序分析、产线布局设计、虚拟调试过程、故障模拟分析等,并实现了结果的可视化展示。 适合人群:本任务书适用于机械工程、工业自动化及相关专业的本科毕业生,尤其是那些对智能制造、生产线优化及虚拟调试感兴趣的学生。 使用场景及目标:①帮助学生掌握Tecnomatix软件的应用技能;②通过实际项目锻炼学生的系统建模和虚拟调试能力;③培养学生解决复杂工程问题的能力,提高其对废旧电子产品回收再利用的认识和技术水平;④为后续的研究或工作打下坚实的基础,比如从事智能工厂规划、生产线设计优化等工作。 其他说明:虽然文中提供了部分Python代码用于模拟关键流程,但完整的产线建模仍需借助Tecnomatix商业软件完成。此外,为了更好地理解和应用这些内容,建议学生具备一定的编程基础(如Python),并熟悉相关领域的基础知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值