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