【JS/读书随笔】JavaScript编程精解/Eloquent JavaScript:Chapter 2 函数

来源:互联网 发布:三省六部三公九卿 知乎 编辑:程序博客网 时间:2024/05/16 13:42
  1. 函数定义顺序
    计算机在开始执行语句之前,会先查找所有的 function 定义,然后保存相关的 function,我们不必去思考多个函数定义的顺序,使用函数是允许它们之间相互调用,而不用考虑那个函数在第一个位置定义。
  2. 词法作用域
    函数内部的变量集是否可见,取决于函数在程序中的位置,在函数“上面”定义的所有变量都是可见的,也就是存在于函数体内并包含函数定义的以及位于程序顶级的变量。javascript 中无法产生新的局部环境
  3. 函数值
    javascript 里的所有东西都是值,包括 function 函数。
  4. 闭包
    问题:如果创建局部变量的函数调用不在栈上了,那么局部变量会发生什么变化?下面的代码展示了这种情况:
    fucntion createFunction(){
    var local = 100;
    return function(){return local;}
    }
    一旦调用了 createFunction 函数,它就会创建一个局部变量,并且返回一个函数(该函数又返回该局部变量)。如何处理这一情况是向上函数变元问题(upwards Funarg problem),很多旧编程语言都禁用了这种形式。幸运的是 javascript 可以解决这个问题,只要这个局部变量是可达的,就会尽力保存局部变量。执行 createFunction()(创建函数并且执行),返回值是 100。
    这种特性是闭包,包裹一些局部变量的一个函数叫做闭包。该行为是我们可以创造性地使用函数值。
  5. 递归
    参考 漫谈递归
0 0
原创粉丝点击