javascript学习笔记(6) 函数递归/作用域/预编译

本文介绍了JavaScript中的函数递归概念,并详细解析了作用域和预编译的过程。在作用域部分,阐述了内外层函数的变量访问规则,以及全局变量的特性。在预编译阶段,讲解了JS运行的三部曲,包括函数声明的提升和变量声明的提升。预编译具体分为函数域和全局域的编译步骤,如创建激活对象(AO)、处理形参和变量、实参与形参的结合等。
摘要由CSDN通过智能技术生成

1.简单的递归案例

 

2.作用域/预编译

互相嵌套的函数,外层函数不能访问里层函数的变量,里层函数可以访问外层函数的变量,即越往里层,权限越高;

全局变量(imply global),window就是全局的域

未经声明就赋值,此变量为全局对象所有;一切全局变量.都是window属性

a = 10;  --> window.a = 10;

var a = 123;   console.log(a);  --> console.log(window.a);

 

Js运行三部曲:通篇扫描,分析语法是否有误;预编译;解释执行

预编译:

函数声明整体提升(函数整体提升到逻辑最前面);变量声明提升(赋值未提升);

预编译过程:

函数域编译过程(预编译发生在函数执行的前一刻)

第一步:创建AO(activation object):

第二步:找形参和变量声明,将变量和形参名作AO属性名,值为undefined;

第三步:将实参和形参统一;

第四步:在函数体里找函数声明,值赋予函数体;

 

全局预编译过程

第一步:生成一个GO对象(global object),

GO == window

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值