💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 函数与闭包 ## 函数调用分类 名称| 说明 ---|--- 方法调用 | 通过接收方对象对函数进行调用(包括apply 和 call) 构造函数调用 | 通过 new 表达式对函数进行调用 函数调用 | 以上两种方式之外的函数调用 ## 作用域 作用域指的是名称(变量名与函数名)的有效范围。 全局作用域:函数之外(最外层代码)的作用域。 函数作用域:在函数内进行声明的名称拥有的作用域。 ## 对闭包的初步认识 闭包的特征:相关的局部变量在函数调用结束之后将会继续存在。 ## 闭包的原理 闭包的前提条件是需要在函数声明的内部声明另一个函数(即嵌套的函数声明)。 ```javascript function f(){ var cnt = 0; return function(){ return cnt ++; } } f(); // 1 f(); // 2 ``` ## 防范命名空间的污染 下面的代码可以利用函数作用域封装名称,以及闭包可以使名称在函数调用结束之后依然存在。 ```javascript (function(){函数体})();