美文网首页
2018-11-30红宝书第7章函数表达式总结

2018-11-30红宝书第7章函数表达式总结

作者: _CCoder | 来源:发表于2018-11-30 21:14 被阅读1次

函数表达式

  • arguments.callee是一个指向正在执行函数的指针,可以理解为指向当前函数自己,递归可以用

闭包

  • 闭包是指有权访问另一个函数作用域中的变量的函数
  • 创建闭包的常见方式,就是在一个函数内部创建另一个函数
  • 【重要】
    外部函数执行完毕后,其活动对象也不会被销毁。因为匿名函数的作用域链仍然在引用这个活动对象,外部函数的活动对象仍然保留在内存中;直到匿名函数(内部函数)被销毁后,外部函数的活动对象才会被销毁
  • 由于闭包会携带包含它的函数的作用域,因此会比其他函数占用更多内存

闭包与变量

  • 闭包函数都引用同一个外部函数的活动对象,因此只能取得包含函数中任何变量的最后一个值

this对象

  • 匿名函数的执行环境具有全局性,因此其this对象通常指向window

内存泄露

  • 闭包会引用包含函数的整个活动对象

模仿块级作用域

  • 将函数声明包含在一对圆括号中,表示它实际上是一个函数表达式。然后在后面加上()表示立即调用
  • 这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

私有变量

  • 私有变量包括函数的参数、局部变量和在函数内部定义的其他函数
  • 把有权访问私有变量和私有函数的公有方法称为特权方法
    1. 第一种在构造函数中定义特权方法
    2. 静态私有变量,通过在私有作用域中定义私有变量和函数,特权方法作为一个闭包,总是保存着对包含作用域(私有作用域)的引用
  • 模块模式:如果必须创建一个对象并以某些数据对其初始化,同时还要公开一些能够访问这些私有数据的方法,就可以使用模型模式,通常来实现单例的特权方法,还有增强的模块模式,返回的单例以某类型为基础

  • var 是函数作用域,let是块级作用域
  • 当在函数内部定义了其他函数,就创建了闭包,闭包有权访问包含函数内部的所有变量
  • 闭包的作用域链包含着它自己的作用域、包含函数的作用域和全局作用域
  • 过度使用闭包会占用大量内存

相关文章

  • 2018-11-30红宝书第7章函数表达式总结

    函数表达式 arguments.callee是一个指向正在执行函数的指针,可以理解为指向当前函数自己,递归可以用 ...

  • JS 冷知识集合

    第1题 总结: 通过函数表达式的形式创建函数, 表达式后面是一个具名函数的时候, 他的函数名只能在函数体里面访问的...

  • 2018-11-30红宝书第6章面向对象总结

    面向对象的程序设计 ECMAScript中有两种属性:数据属性和访问器属性数据属性包含一个数据值的位置 修改属性默...

  • 2018-12-08

    7.5 总结 在Javascript变成中,函数表达式是一种非常有用的技术。使用函数表达式可以无须对函数命名,从而...

  • Lambda表达式总结

    Lambda表达式总结使用范例以及例子Lambda表达式基础语法函数式接口Lambda练习Java8四大内置函数式...

  • Python eval 函数

    Python eval 函数学习与总结。 基本用法 简介 eval() 函数用来执行一个字符串表达式,并返回表达式...

  • 《DISCover自我探索》7日共读-D07

    打卡记录(总结) 1.芮春华 #红宝书一周共读#20180910 读书总结 读完红宝书,我的收获有:(不少于三点)...

  • 第133章 SQL函数 STRING

    第133章 SQL函数 STRING 将表达式转换并连接成字符串的函数。 大纲 参数 string - 表达式,可...

  • Kotlin入门

    Kotlin学习总结,适用入门 基础语法 函数定义 函数定义关键字 fun 参数格式 参数:类型 表达式作为函数体...

  • 函数表达式

    以下内容总结自《JS高级程序设计》第三版 什么是函数表达式? 函数表达式,是JS中定义函数的一种方式。在JS中,共...

网友评论

      本文标题:2018-11-30红宝书第7章函数表达式总结

      本文链接:https://www.haomeiwen.com/subject/hmqkcqtx.html