第7章自我小结
js高级程序设计
第7章内容总结
1 函数表达式的特征
2 使用函数实现递归
3 使用闭包定义私有变量
声明提前
1 .函数声明和函数表达式存在区别:
abc(); //Uncaught TypeError: abc is not a functionvar abc = function(){console.log("hello world");}
abc(); //hello worldfunction abc(){console.log("hello world");}
2.递归
例:
function factorial(num) {if(num <= 1){return 1;} else {return num*factorial(num-1);}}
arguments.callee是指向正在执行函数的指针,可以减少耦合度。防止出现下列情况:
var abc = factorial;abc(); //报错
3.闭包

(1)全局初始化,由 js 引擎构建一个ecs执行环境栈,作用维持执行顺序,再创建ec执行环境Object代表全局对象,(由于不能直接访问Object,通过window对象指向Object访问。)
outer代码段存在执行环境中。

(2)开始执行outer函数,outer() 被push入ECS,同时创建出AO对象,它自身的AO对象排在作用域链的最顶端,parent属性指向了它的上一级window.(方便js引擎查找变量属性的位置)()
(3)outer函数内部返回匿名函数,函数创建,同时scope指向当前的AO。
scope总是指向定义函数时所在的环境。
(5)

(6)最后,i加到了outer的ao上,由于AO对象的限制作用没有办法回收而被保留了下来。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
