23、JavaScript 函数:闭包与函数特性深入解析

JavaScript函数:闭包与特性深度解析

JavaScript 函数:闭包与函数特性深入解析

1. 立即调用函数表达式(IIFE)

在 JavaScript 里,有一种常见的技术是在单个表达式中定义并调用函数,也就是立即调用函数表达式(IIFE)。示例代码如下:

(function() {
    // 代码块放这里
}());

这里开头的括号是必需的。要是没有它,JavaScript 解释器会把 function 关键字解析成函数声明语句;有了括号,解释器就能正确把它识别为函数定义表达式。同时,这个括号也有助于开发者识别函数是要立即调用,而非后续使用。

当在命名空间函数里定义一个或多个函数,使用该命名空间内的变量,再把这些函数作为命名空间函数的返回值返回时,函数作为命名空间的用法就很有用了。这类函数就是闭包,下面会详细介绍。

2. 闭包

2.1 词法作用域与闭包概念

JavaScript 和多数现代编程语言一样,采用词法作用域。这意味着函数执行时使用的是定义时的变量作用域,而非调用时的作用域。为实现词法作用域,JavaScript 函数对象的内部状态不仅要包含函数代码,还得有对函数定义所在作用域的引用。在计算机科学中,函数对象和其变量解析所在的作用域(一组变量绑定)的组合就叫闭包。

从技术上讲,所有 JavaScript 函数都是闭包,但多数函数在定义的作用域内被调用,所以闭包的影响通常不明显。当闭包在定义作用域之外被调用时,就会变得有趣,这常见于嵌套函数对象从定义它的函数中返回的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值