1、作用域
1、js有两种作用域:全局作用域和函数作用域
1)、内部的作用域能访问外部,反之不行;访问时从内向外依次查找;
2)、如果在内部作用域中访问外部,则会产生闭包;
3)、内部作用域能访问的外部,取决于函数定义的位置,与调用无关;
2、作用域内定义的变量、函数声明会提升到作用域顶部;
3、未经声明的变量直接赋值,此变量为全局对象所有
a = 3 // => var a = 3
4、一切声明的全局变量,全是window的属性
a = 3 // => window.a
2、预编译
1、预编译四部曲
1)、创建AO对象(执行期上下文)
AO {}
2)、找形参和变量声明,将形参名和变量名作为AO对象属性名,值为undefined
3)、将实参值和形参统一
4)、找函数体里面的函数声明,值赋予函数体


JS作用域与预编译详解

被折叠的 条评论
为什么被折叠?



