🔈函数对象和闭包
2019-2-20
| 2022-9-1
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
URL
Sep 1, 2022 09:23 AM
匿名函数lamda
自运行,不需要别人调用就能直接运行的函数
自运行通常针对于匿名函数
 
闭包
一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。
闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。
作用:在fun的函数外,可以使用fun的内部局部变量
调用构造方法时发生了什么
  • 通过new关键字,在堆开辟对象空间
  • 为该对象添加各种属性
  • 将该空间的地址返回
垃圾回收机制,自动将堆开辟的空间进行释放 系统何时清空该对象 当没有任何一个引用指向该对象时
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则可能会造成网页的性能问题,在IE中可能会造成内存的泄露
 
用闭包方式实现三个数的乘法
 
闭包案例

函数的内置对象:

this
a.在事件体中出现,代表触发该事件的元素
b.在普通函数中出现,代表调用该方法的对象
c.在构造方法中出现,代表new出来的对象
d.箭头函数体内的this代表它爹的this,箭头函数就没有this
arguments
是存储函数参数的伪数组
只能像数组一样访问,但是不可以引用数组相关的API
arguments.callee:函数本身的引用
 
学习思考
  • javascript
  • 函数跨域jsonp
    • Valine
    • Cusdis
    目录