JS闭包

本文介绍了JavaScript中的变量作用域概念,包括全局变量与局部变量的区别,并深入探讨了闭包的概念及其应用场景,如实现公有变量、缓存、封装及模块化开发。

变量的作用域

两种:

全局变量和局部变量,JS特殊在于函数内部可以直接读取全局变量(在函数外部自然无法读取函数内的局部变量)

注意:函数内部声明变量的时候,一定要使用var命令,否则声明了一个全局变量

“链式作用域”结构:

在函数的内部再定义一个函数,子对象会一级一级地向上寻找所有父对象的变量。所以父对象的所有变量,对子对象都是可见的,反之则不成立。

 

闭包

(1)闭包是指有权访问另一个函数作用域的变量的函数

(2)创建闭包的常见方式,就是在一个函数内部创建另一个函数。

(3)内部的函数通过return被保存在了外部,一定生成闭包。

(4)当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露。 

闭包的作用

实现公有变量

eg:函数累加器

可以做缓存(存储结构)

eg:eater

可以实现封装,属性私有化

eg:Person();

模块化开发,防止污染全局变量

 

个人理解,闭包就是能够读取其他函数内部变量的函数。因为在JS中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁。

 

使用闭包需要注意:

(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

立即执行函数

两种写法

(function(){}());W3C建议第一种

(function(){})();

只有表达式才能被执行符号执行

 

在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统转化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值